12.1.1 事务

2025-08-04 17:16:26 更新

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)数据库系统能应对断电、系统崩溃等情况,回滚在系统重新启动时进行。