Sqlite事物与锁
1事务 事务定义了一组SQL命令的边界,这组命令或者作为一个整体被全部执行,或者都不执行。事务的典型实例是转帐。 2事务的范围 事务由3个命令控制:BEGIN、COMMIT和ROLLBACK。BEGIN开始一个事务,之后的所有操作都可以取消。COMMIT使BEGIN后的所有命令得到确认;而ROLLBACK还原BEGIN之后的所有操作。如: sqlite> BEGIN; sqlite> DELETE FROM foods; sqlite> ROLLBACK; sqlite> SELECT COUNT(*) FROM foods; 上面开始了一个事务,先删除了foods表的所有行,但是又用ROLLBACK进行了回卷。再执行SELECT时发现表中没发生任何改变。 SQLite默认情况下,每条SQL语句自成事务(自动提交模式)。 3冲突解决 违反约束会导致事务的非法结束。大多数数据库(管理系统)都是简单地将前面所做的修改全部取消。 SQLite有其独特的方法来处理约束违反(或说从约束违反中恢复),被称为冲突解决。如: sqlite> UPDATE foods SET id=800-id; SQL error: PRIMARY KEY must be unique SQLite提供5种冲突解决方案:REPLACE、IGNORE、FAIL、ABORT和ROLLBACK。 REPLACE: