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