11、事务处理

Posted by CodingWithAlice on July 11, 2022

11、事务处理

阅读书籍《SQL必知必会(第4版)》笔记

事务处理是一种 机制

  • 用来管理必须 成批执行 的 SQL 操作,保证数据库不包含不完整的操作结果
  • 关键:将 SQL 语句分解为逻辑块,并规定数据何时应该回退

作用:

  • 保证一组操作不会中途停止,要么完全执行,要么完全不执行
  • 发生错误时会进行回退(撤销),将数据库恢复到某个已知且安全的状态

管理的语句:管理 INSERTUPDATEDELETE语句,但不能回退 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值表示有错误发生

483FB3F1-F533-4F5D-8726-67DDE46F95C5