
# ABORT
#### 功能描述
回滚当前事务并且撤销所有当前事务中所做的更改。
作用等同于[ROLLBACK](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0266.html)，早期SQL有用ABORT，现在推荐使用ROLLBACK。
关于更多**事务管理** ，请参见[事务管理](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0117.html)。
#### 注意事项
在事务外部执行ABORT语句不会影响事务的执行，但是会产生一个警告信息。
#### 语法格式
```
ABORT [ WORK | TRANSACTION ];
```
#### 参数说明
**WORK \| TRANSACTION**
可选关键字，对ABORT操作没有影响。
#### 示例
以下演示，使用ABORT语句回滚撤销修改账号余额的过程。
1. 创建测试表并导入数据。 
   ```
   -- 创建测试表
   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;
   ```
   ![](https://support.huaweicloud.com/sqlreference-911-dws/figure/zh-cn_image_0000002567696189.png "点击放大")
   
   
2. 事务内使用ABORT进行回滚。 
   1. 开启事务。
      ```
      BEGIN TRANSACTION;
      ```
      
   
   2. 执行修改操作（扣减lily余额）。
      ```
      UPDATE user_account SET balance = balance - 50 WHERE id = 1;
      ```
      
   
   3. 查看修改后的数据（事务内临时生效）。
      ```
      SELECT * FROM user_account;
      ```
      ![](https://support.huaweicloud.com/sqlreference-911-dws/figure/zh-cn_image_0000002536936396.png "点击放大")
      
   
   4. 执行 ABORT 回滚（撤销所有修改）。
      ```
      ABORT;
      ```
      以上还有**等价写法**，例如ABORT WORK; 或者ABORT TRANSACTION; 现代写法用ROLLBACK;
      
   
   5. 验证回滚结果：数据恢复为初始值。
      ```
      SELECT * FROM user_account;
      ```
      ![](https://support.huaweicloud.com/sqlreference-911-dws/figure/zh-cn_image_0000002567776207.png "点击放大")
      
   
   
   
   
 
#### 相关链接
[事务管理](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0117.html)，[SET TRANSACTION](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0264.html)，[COMMIT \| END](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0259.html)，[ROLLBACK](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0266.html)
