[flutter] 플러터(sqflite)에서의 데이터베이스 트랜잭션 롤백 처리

플러터 앱을 개발하다 보면 데이터베이스 트랜잭션을 처리할 때가 있습니다. 데이터베이스 트랜잭션 도중 에러가 발생할 경우, 롤백(rollback) 처리를 통해 트랜잭션이 실패한 부분을 이전 상태로 복구할 수 있습니다. 이번 글에서는 플러터(sqflite)에서의 데이터베이스 트랜잭션 롤백 처리에 대해 알아보겠습니다.

1. 데이터베이스 트랜잭션의 이해

트랜잭션은 데이터베이스의 상태를 변경하는 작업의 단위입니다. 트랜잭션은 ACID라는 속성을 가지고 있어야 하며, ACID는 다음과 같이 정의됩니다.

이러한 ACID 속성을 지키면서 데이터베이스 상태를 변화시키는 것이 트랜잭션입니다.

2. 데이터베이스 트랜잭션 롤백 처리

플러터 앱에서 sqflite를 사용하여 데이터베이스 트랜잭션을 처리할 때, 롤백 처리는 다음과 같이 수행됩니다.

await db.transaction((txn) async {
  try {
    // 트랜잭션 수행
    await txn.update(table, values);
    await txn.insert(table, values);
    // 트랜잭션 성공 시 커밋
    await txn.commit();
  } catch (e) {
    // 에러 발생 시 롤백
    await txn.rollback();
  }
});

위 코드에서 txn.commit()은 트랜잭션을 커밋하는 메서드이며, 트랜잭션이 성공적으로 실행되었을 때 호출됩니다. 반면 txn.rollback()은 트랜잭션을 롤백하는 메서드로, 트랜잭션이 실패했을 때 호출됩니다.

이처럼 sqflite에서는 transaction 메서드를 통해 트랜잭션을 정의하고, 이를 통해 롤백 처리를 수행할 수 있습니다.

3. 마무리

이번 글에서는 플러터(sqflite)에서의 데이터베이스 트랜잭션 롤백 처리에 대해 알아보았습니다. 데이터베이스 트랜잭션은 데이터의 일관성을 유지하고, 에러 발생 시 롤백 처리를 통해 이전 상태로 복구하는 중요한 기능이므로, 실무에서 접목할 때 유용하게 활용될 것입니다.

더 많은 정보를 원하신다면 sqflite 공식 문서를 참고하시기 바랍니다.

관련 문서: sqflite 공식 문서

태그: flutter, sqflite, 데이터베이스, 트랜잭션, 롤백