SQLite 的事务机制遵循 ACID 原则:
-
原子性(Atomicity)
- 事务中的所有操作要么全部成功,要么全部失败
- 使用
BEGIN TRANSACTION开始事务,COMMIT提交事务,ROLLBACK回滚事务 - SQLite 使用预写日志(WAL)或回滚日志来保证原子性
-
一致性(Consistency)
- 事务执行前后,数据库必须保持一致状态
- 所有约束(主键、外键、唯一约束、检查约束)在事务提交时被验证
- 违反约束的操作会导致事务回滚
-
隔离性(Isolation)
- SQLite 默认使用串行化隔离级别
- 读操作不会阻塞其他读操作
- 写操作会获得数据库的排他锁,阻止其他写操作
- 支持多种隔离模式:DEFERRED、IMMEDIATE、EXCLUSIVE
-
持久性(Durability)
- 事务提交后,对数据库的修改是永久性的
- 数据写入磁盘后才返回提交成功
- 使用同步模式(synchronous)控制数据持久性级别
-
事务控制命令
sqlBEGIN TRANSACTION; -- 开始事务 -- 执行 SQL 操作 COMMIT; -- 提交事务 -- 或 ROLLBACK; -- 回滚事务 -
自动事务
- 如果没有显式开始事务,SQLite 会为每个语句自动创建事务
- 建议在复杂操作中使用显式事务以提高性能和保证数据一致性
-
保存点(Savepoints)
- 支持嵌套事务和部分回滚
- 使用
SAVEPOINT创建保存点,RELEASE SAVEPOINT释放,ROLLBACK TO SAVEPOINT回滚到指定点
SQLite 的事务机制确保了数据的安全性和一致性,特别适合需要强一致性保证的应用场景。