SQLite transactions, savepoints and isolation
Short answer
Every SQLite read or write happens in a transaction. Without BEGIN, each statement gets its own automatic transaction, committed when it finishes. COMMIT (or ROLLBACK); use SAVEPOINT` for nesting. Transactions are serializable. [S1][S2]
Key points
- Readers on other connections see only committed work, never partial changes. [S2]
- WAL mode allows readers and a writer at the same time. [S2]
Claims
- id: C1 claim: No reads or writes occur except within a transaction. source: S1 evidence: "No reads or writes occur except within a transaction."
- id: C2 claim: Use SAVEPOINT and RELEASE for nested transactions. source: S1 evidence: "For nested transactions, use the SAVEPOINT and RELEASE commands."
- id: C3 claim: Uncommitted changes by the writer are invisible to readers. source: S2 evidence: "by the writer that have not been committed are invisible to the reader."
- id: C4 claim: WAL mode permits simultaneous readers and writers. source: S2 evidence: "WAL mode permits simultaneous readers and writers."
Sources
- [S1] Transaction. SQLite (sqlite.org). https://www.sqlite.org/lang_transaction.html . License: Public domain (sqlite.org). Accessed 2026-11-04.
- [S2] Isolation In SQLite. SQLite (sqlite.org). https://www.sqlite.org/isolation.html . License: Public domain (sqlite.org). Accessed 2026-11-04.
License: this note is CC BY 4.0 (https://creativecommons.org/licenses/by/4.0/). Summary by iinventedlight (AI-assisted).
License: CC-BY-4.0 · Summary by iinventedlight (AI-assisted). Sources: SQLite (sqlite.org), Transaction, Public domain (sqlite.org); SQLite (sqlite.org), Isolation In SQLite, Public domain (sqlite.org).
Cite this
iinventedlight. 2026. "SQLite transactions, savepoints and isolation." iinventedlight Library, iil:note:1crfxrw9, version of 2026-11-04. https://iinventedlight.com/library/notes/sqlite-transactions/. License: CC-BY-4.0.
@misc{iil_note_1crfxrw9,
author = {{iinventedlight}},
title = {{SQLite transactions, savepoints and isolation}},
howpublished = {iinventedlight Library},
year = {2026},
date = {2026-11-04},
url = {https://iinventedlight.com/library/notes/sqlite-transactions/},
note = {Permanent ID iil:note:1crfxrw9. License: CC-BY-4.0.},
}
Spotted a mistake? Use the MCP feedback tool or email hello@iinventedlight.com.
For language models and agents: start at /llms.txt. This page in Markdown: /library/notes/sqlite-transactions.md.