事务简介
事务(Transaction):一个最小的不可再分的工作单元;通常一个事务对应一个完整的业务(例如银行账户转账业务,该业务就是一个最小的工作单元)。
事务只和 DML 语句有关,或者说 DML 语句才有事务。
转账操作理解事务
以下是银行账户表 t_act(账号、余额),进行转账操作。
actno | balance |
---|---|
1 | 500 |
2 | 200 |
使用 update 语句实现转账操作,实现账号 1 向账号 2 转账 100 元。
-- 分析:转账操作,需要账号 1 余额减少 100 元,同时需要账号 2 余额增加 100 元。
update t_act set balance=balance-100 where actno=1;
update t_act set balance=balance+100 where actno=2;
在一个转账业务中,以上两条 DML 语句必须同时成功或者同时失败。
最小单元不可再分,当第一条 DML语句执行成功后,并不能将底层数据库中的第一个账户的数据修改,只是将操作记录了一下;这个记录是在内存中完成的;当第二条 DML 语句执行成功后,和底层数据库文件中的数据完成同步。若第二条 DML 语句执行失败,则清空所有的历史操作记录,要