[Flutter] sqflite transaction

Elen li·2021년 6월 3일
0

트랜잭션은 DB에서 데이터 작업을 하는 중 오류가 발생했을 때,
작업 전의 데이터를 보장해주는 기능입니다.

3MB 정도 되는 리스트를 for문을 돌려서 저장을 하다보니,
2개씩만 저장되고 DB가 닫히는 증상이 나왔습니다.

저장하려는 데이터의 문제인 줄 알고 한참을 헤메다가 생각한 방법은 transaction을 이용해서 insert 하는 것이었습니다.
에러가 발생해도 이전 데이터의 상태를 보장해서인지 거대한 양에서도 끊김없이 insert가 되는 것을 확인할 수 있었습니다.

final db = await _openDB();
      //transaction
      await db.transaction((txn) async {
        for (var element in tableModels) {
          var map = element.toMap();
          var ret = await txn.rawInsert(
              "쿼리 문", map.values.toList());
        }
      });

      _closeDB(db);
profile
Android, Flutter 앱 개발자입니다.

0개의 댓글