更新时间:2026-04-10 GMT+08:00
分享

ABORT

功能描述

回滚当前事务并且撤销所有当前事务中所做的更改。

作用等同于ROLLBACK,早期SQL有用ABORT,现在推荐使用ROLLBACK。

关于更多事务管理,请参见事务管理

注意事项

在事务外部执行ABORT语句不会影响事务的执行,但是会产生一个警告信息。

语法格式

1
ABORT [ WORK | TRANSACTION ] ;

参数说明

WORK | TRANSACTION

可选关键字,对ABORT操作没有影响。

示例

以下演示,使用ABORT语句回滚撤销修改账号余额的过程。

  1. 创建测试表并导入数据。

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    -- 创建测试表
    DROP TABLE IF EXISTS user_account;
    CREATE TABLE  user_account (
        id INT PRIMARY KEY,
        username VARCHAR(20),
        balance DECIMAL(10,2)
    );
    -- 插入初始数据
    INSERT INTO user_account VALUES (1, 'lily', 100.00);
    INSERT INTO user_account VALUES (2, 'lilei', 200.00);
    -- 查看初始数据
    SELECT * FROM user_account;
    

  2. 事务内使用ABORT进行回滚。

    1. 开启事务。
      1
      BEGIN TRANSACTION;
      
    2. 执行修改操作(扣减lily余额)。
      1
      UPDATE user_account SET balance = balance - 50 WHERE id = 1;
      
    3. 查看修改后的数据(事务内临时生效)。
      1
      SELECT * FROM user_account; 
      

    4. 执行 ABORT 回滚(撤销所有修改)。
      1
      ABORT; 
      

      以上还有等价写法,例如ABORT WORK; 或者ABORT TRANSACTION; 现代写法用ROLLBACK;

    5. 验证回滚结果:数据恢复为初始值。
      1
      SELECT * FROM user_account;
      

相关文档