원자적 작업 묶음
Transaction = statement 그룹을 한 원자 단위로: 다 적용 또는 하나도 적용 안 함. SQLite 는 기본값으로 완전 ACID — single statement 도 implicit transaction 안에서 돌아.
3 가지 명시적 모양:
BEGIN; ... COMMIT;— 명시 transaction, 성공 시 commit.BEGIN; ... ROLLBACK;— BEGIN 이후 모든 변경 abort.- SAVEPOINT — outer transaction 안의 nested 체크포인트. 성공 시
RELEASE, 실패 시ROLLBACK TO.
SQLite transaction 모드:
- DEFERRED (기본) — 필요할 때만 락 획득.
- IMMEDIATE — BEGIN 에서 write 락 획득, 다른 writer 즉시 block.
- EXCLUSIVE — exclusive 락, 다른 reader/writer 모두 block.
Tip: 다른 writer 와 경쟁 가능한 'all-or-nothing' workflow 면
BEGIN IMMEDIATE 써. 기본 DEFERRED 는 다른 writer 가 먼저 도착하면 COMMIT 시점에 SQLITE_BUSY 로 실패할 수 있음 — IMMEDIATE 는 BEGIN 에서 빨리 실패.