回滚事务

回滚事务是指用命令中止当前的事务,事务处理期间对数据库所做的所有操作都被撤消,并关闭所有打开的游标。其语法格式如下:

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;