11、事务处理
阅读书籍《SQL必知必会(第4版)》笔记
事务处理是一种 机制:
- 用来管理必须 成批执行 的 SQL 操作,保证数据库不包含不完整的操作结果
- 关键:将 SQL 语句分解为逻辑块,并规定数据何时应该回退
作用:
- 保证一组操作不会中途停止,要么完全执行,要么完全不执行
- 发生错误时会进行回退(撤销),将数据库恢复到某个已知且安全的状态
管理的语句:管理 INSERT
、UPDATE
、DELETE
语句,但不能回退 SELECT(没必要)、CREATE、DROP
其他涉及名词解释:
-
事务:指一组 SQL 语句
-
回退:指撤销指定 SQL 语句的过程
-
提交:指将为存储的 SQL 语句写入数据库表
-
保留点:指事务处理中设置的临时占位符,可以对它发布回退
-
标识:大部分事务一直存在,直到被中断
COMMIT # 保存修改 ROLLBACK # 撤销 -- 常见标识1 BEGIN TRANSACTION … COMMIT TRANSACTION -- 常见标识2 START TRANSACTION … -- 常见标识3 SET TRANSACTION …
案例1:
- 最后的 COMMIT 语句仅在不出错时写出更改,如果第一条 DELETE 起作用,但是第二条失败,则 DELETE 不会提交
# 完全删除订单 12345
BEGIN TRANSACTION
DELETE OrderItems WHERE order_num = 12345
DELETE Orders WHERE order_num = 12345
COMMIT TRANSACTION
--
SET TRANSACTION
DELETE OrderItems WHERE order_num = 12345
DELETE Orders WHERE order_num = 12345
COMMIT;
案例2:
- 在 SQL Server 中可以检查一个名为 @@ERROR 的变量,看操作是否成功 -> 非0值表示有错误发生