SQL事务
概念
- 事务(Transaction)是指一个或多个更改数据库的扩展。例如,如果您正在创建一个记录或者更新一个记录或者从表中删除一个记录,那么您正在该表上执行事务。重要的是要控制事务以确保数据的完整性和处理数据库错误。
- 事务(Transaction)是一个对数据库执行工作单元。事务(Transaction)是以逻辑顺序完成的工作单位或序列,可以是由用户手动操作完成,也可以是由某种数据库程序自动完成。
事务的特点
四个特点
原子性(Atomicity)
确保工作单位内的所有操作都成功完成,否则,事务会在出现故障时终止,之前的操作也会回滚到以前的状态。一致性(Consistency)
确保数据库在成功提交的事务上正确地改变状态。隔离性(Isolation)
使事务操作相互独立和透明。持久性(Durability)
确保已提交事务的结果或效果在系统发生故障的情况下仍然存在。
事务控制
含义
- BEGIN TRANSACTION
开始事务处理。
- COMMIT
保存更改,或者可以使用 END TRANSACTION 命令。
- ROLLBACK
回滚所做的更改。
- 事务控制命令只与 DML 命令 INSERT、UPDATE 和 DELETE 一起使用。他们不能在创建表或删除表时使用,因为这些操作在数据库中是自动提交的
BEGIN TRANSACTION 命令
语法
1 | BEGIN TRANSACTION |
- READ(X):把数据项X从数据库读出到事务的私有缓冲中
- WRITE(X):把数据项X从事务的私有缓冲中写到数据库。
COMMIT 命令
作用
COMMIT 命令用于保存事务对数据库所做的更改。会将自上次 COMMIT 命令或者 ROLLBACK 命令执行以来所有的事务都保存到数据库中。
语法
1 | DELETE FROM S |
ROLLBACK 命令
作用
ROLLBACK 命令用于撤销尚未保存到数据库中的事务。只能撤销自上次 COMMIT 命令或者 ROLLBACK 命令执行以来的事务。
语法
1 | DELETE FROM S |
ROLLBACK 命令可以用于撤销一系列的事务
- 回滚至某一保存点的语法如下所示:
1
ROLLBACK TO SAVEPOINT_NAME
SAVEPOINT 命令
作用
SAVEPOINT 是事务中的一个状态点,使得我们可以将事务回滚至特定的点,而不是将整个事务都撤销。
语法
1 | SAVEPOINT SAVEPOINT_NAME |
- 该命令只能在事务语句之间创建保存点(SAVEPOINT)。
RELEASE SAVEPOINT 命令
作用
RELEASE SAVEPOINT 命令用于删除先前创建的保存点。
语法
1 | RELEASE SAVEPOINT SAVEPOINT_NAME |
SET TRANSACTION 命令
- 作用
- SET TRANSACTION 命令可以用来初始化数据库事务,指定随后的事务的各种特征。
将某个事务指定为只读或者读写。
1 | SET TRANSACTION [ READ WRITE | READ ONLY ] |
存储过程使用事务
实例一
1 | Create Procedure MyProcedure |
实例二
1
2
3
4
5
6
7
8
create proc 1
@si chark20),@pi char(20),@Ji chark20),@shu int
insert into SPJ values(@si,@pi,@Ji,@shu)
bdgin tran t1
if exists (select * from p where Pno=@Pi)
commit tran t1
else
rollback tran t1
1 | create proc 1 |
参考