1.概述
事务(Transaction):是一系列的数据库操作,是数据库应用程序的基本逻辑单位,即应用程序对数据库的操作都应以事务的方式进行。
事务是一个操作序列,这些操作“要么都做,要么都不做",是数据库环境中不可分割的
逻辑工作单位。
事务与程序:一般一个程序可包含多个事务。
事务通常由数据库操纵语言DML或其他高级语言书写的用户程序来实现。一个事务由应用程序的一组操作序列组成。
语法结构
BEGIN TRANSACTION END TRANSACTION |
定义语句 | |||
1 | BEGIN TRANSACTION | 事务开始 | |
2 | END TRANSACTION | 事务结束 | |
3 | COMMIT | 事务提交 | 表示事务成功结束,将通知事务管理器该事务的所有更新操作可以被提交或永久保留 |
4 | ROLLBACK | 事务回滚 | 表示事务非成功结束,将通知事务管理器出故障,数据库可能处于不一致状态,该事务所有更新操作必须回滚或撤销 |
案例:银行转账业务“从账户A转入账户B金额k元”
顾客角度:转账是一次单独操作;
数据库系统:至少由两个操作组成,第一步从账户A减去x元,第二步给账户B加上x元。
2. SQL中事务开始与结束
SQL标准规定:当一条SQL语句被执行,就隐式地开始了一个事务,SQL中的Commit work和Rollback work语句之一会结束一个事务。
1 | Commit work 提交当前事务 | 将该事务所做的更新在数据库中永久保存。 —旦旧事务被提交,一个新事务自动开始。 |
2 | Rollback work 回滚当前事务 | 将该事务对数据库的更新撤销。 数据库恢复到该事务执行第一条语句之前的状态。 |
注意:
(1)若事务己执行了 Commit work,就不能用Rollback work来撤销。
(2)在发生诸如某条SQL语句错误、断电、系统崩溃情况下,若事务还没有执行Commit work,则所造成的影响将被回滚。
(3)数据库系统能应对断电、系统崩溃等情况,回滚在系统重新启动时进行。