一、概述
1、什么是事务?
事务(Transation),是一个“最小”的“不可再分”的工作单元。 通常一个事务对应一个完整的业务,例如:一个银行的账户转账业务就是一个最小的工作单元。而一个完整的业务需要一个批量的DML语句共同联合完成。
事务只和DML语句有关系,或者说DML语句才有事务。以上所描述的“批量的DML语句”共有多少条DML语句,和业务逻辑有关系。业务逻辑不同DML语句的个数不同。
2、关于银行账户转账操作,账户转账是一个完整的业务,最小的单元,不可再分。即银行账户转账是一个事务。
t_act 账户表
actnobalance
-------------------------------
act-001 30000.0
act-00210000.0
执行转账操作(10000):
update t_act set balance=20000.0 where actno='act-001';
update t_act set balance=20000.0 where actno='act-002';
以上的两条DML语句要求必须同时成功或者同时失败,最小单元,不可再分。当第一条DML语句执行成功之后,并不能将底层数据库中第一个账户的数据修改,只是将操作记录了一下,这个记录是在内存中完成的,当第二条DML语句执行成功之后,和底层数据库文件中的数据完成同步。若第二条DML语句执行失败,清空所有历史操作记录。
要完成以上的功能,必须借助事务。事务只和数据文件有关系。
3、事务的四个特性:
原子性(A)
* 事务是最小的工作单元,不可再分。
一致性(C)
* 事务要求所有的DML语句操作的时候,必须保证同时成功或者同时失败。
隔离性(I)
* 事务A和事务B之间具有隔离性。
持久性(D)
* 是事务的保证,事务终结的标志。【内存中的数据持久到硬盘文件中】
4、关于事务的术语
- -开启事务:start Transaction
- -事务结束:End Transaction
- -提交事务:Commit Transaction
-- 回滚事务:Rollback Transaction
5、和事务有关的两条重要的SQL语句【TCL】
commit:提交 rollback:回滚 savepoint :保存点
6、事务开启和结束