说明
SQLite 的事务是一个对数据库执行工作的工作单元。
可以把许多的 SQLite 查询联合成一组,把所有这些放在一起作为事务的一部分进行执行。
事务的4个属性(ACID):
(1)原子性(Atomicity):确保工作单位内的所有操作都成功完成,否则,事务会在出现故障时终止,之前的操作也会回滚到以前的状态。
(2)一致性(Consistency):确保数据库在成功提交的事务上正确地改变状态。
(3)隔离性(Isolation):使事务操作相互独立和透明。
(4)持久性(Durability):确保已提交事务的结果或效果在系统发生故障的情况下仍然存在。
事务控制:
1. BEGIN TRANSACTION:开始事务处理。
2. COMMIT:保存更改,或者可以使用 END TRANSACTION 命令,用于把事务调用的更改保存到数据库中的事务命令。
3. ROLLBACK:回滚所做的更改,相当于没有操作,回到begin之前。
实例:
假设有如下表student:
sqlite> select * from student;
ID NAME AGE ADDRESS
---------- ---------- ---------- ----------
1 xiaoming 18 shenzhen
2 xiaohua 18 beijing
3 mingming 19 shanghai
4 xiaogang 20 hangzhou
5 honghong 17 shenzhen
6 liangliang 21 wuhan
7 tingting 23 shenzhen
sqlite>
事务开始:
sqlite> begin;
这里进行操作,比如删除一条记录:
sqlite> delete from student where ID =2;
这里进行回滚,回到begin之前:可以看到相当于没操作。
sqlite> rollback;
sqlite> select * from student;
ID NAME AGE ADDRESS
---------- ---------- ---------- ----------
1 xiaoming 18 shenzhen
2 xiaohua 18 beijing
3 mingming 19 shanghai
4 xiaogang 20 hangzhou
5 honghong 17 shenzhen
6 liangliang 21 wuhan
7 tingting 23 shenzhen
假设提交了:ID为2的人被删除了。
sqlite> begin;
sqlite> delete from student where ID =2;
sqlite> commit;
sqlite> select * from student;
ID NAME AGE ADDRESS
---------- ---------- ---------- ----------
1 xiaoming 18 shenzhen
3 mingming 19 shanghai
4 xiaogang 20 hangzhou
5 honghong 17 shenzhen
6 liangliang 21 wuhan
7 tingting 23 shenzhen
sqlite>
1. 请仿照例子,更新ID为3的人ADDRESS到 guangdong,分别进行提交和回滚操作。