回滚事务¶
回滚事务是指用命令中止当前的事务,事务处理期间对数据库所做的所有操作都被撤消,并关闭所有打开的游标。其语法格式如下:
ROLLBACK [WORK];
ROLLBACK WORK 对宿主变量内容或程序的控制流没有影响。
用户可以在调用任何可执行SQL语句之后,进行事务回滚。
用户可以通过 SAVEPOINT 变量名; 的方式在一个事务中定义多个保存点,然后通过 ROLLBACK TO 变量名; 的方式回滚到相应保存点。
示例¶
示例1: 开始一个事务并回滚
-- 清理环境
DROP TABLE tab1 CASCADE;
-- 创建表并插入数据
CREATE TABLE tab1 (a INT);
INSERT INTO tab1 VALUES(1);
INSERT INTO tab1 VALUES(2);
SELECT * FROM tab1 ORDER BY a;
A(int) |
------------
1 |
------------
2 |
总数目:2
-- 开始一个事务
BEGIN;
-- 事务中插入一条数据
INSERT INTO tab1 VALUES(3);
SELECT * FROM tab1 ORDER BY a;
A(int) |
------------
1 |
------------
2 |
------------
3 |
总数目:3
-- 回滚事务, 事务中插入的数据不存在了
ROLLBACK;
SELECT * FROM tab1 ORDER BY a;
A(int) |
------------
1 |
------------
2 |
总数目:2
-- 删除表
DROP TABLE tab1;