SQLite Transactions

Managing transactions

Basic Transaction

BEGIN TRANSACTION; # start transaction
INSERT INTO users VALUES (1, 'John');
UPDATE accounts SET balance = balance - 100;
COMMIT; # save changes

Rollback

BEGIN TRANSACTION;
DELETE FROM users WHERE id = 1;
ROLLBACK; # undo changes

Transaction Types

BEGIN DEFERRED; # lock when needed (default)
BEGIN IMMEDIATE; # lock for write immediately
BEGIN EXCLUSIVE; # exclusive lock

Savepoints

SAVEPOINT sp1; # create savepoint
INSERT INTO logs VALUES (1, 'test');
ROLLBACK TO sp1; # rollback to savepoint
RELEASE sp1; # remove savepoint

Auto-commit

# SQLite is in auto-commit mode by default
# Each statement is its own transaction
# BEGIN disables auto-commit