SAVEPOINT¶
说明¶
在事务中设置一个保存点
示例¶
示例1: 设置保存点
-- 清理环境
DROP TABLE tab1 CASCADE;
-- 创建表并插入数据
CREATE TABLE tab1 (a INT);
INSERT INTO tab1 VALUES(100);
INSERT INTO tab1 VALUES(200);
SELECT * FROM tab1 ORDER BY a;
A(int) |
------------
100 |
------------
200 |
总数目:2
-- 开始事务
BEGIN;
INSERT INTO tab1 VALUES(300);
-- 表中有 3 条数据
SELECT * FROM tab1 ORDER BY a;
A(int) |
------------
100 |
------------
200 |
------------
300 |
总数目:3
-- 设置保存点 sp1
SAVEPOINT sp1;
INSERT INTO tab1 VALUES(400);
-- 表中有 4 条数据
SELECT * FROM tab1 ORDER BY a;
A(int) |
------------
100 |
------------
200 |
------------
300 |
------------
400 |
总数目:4
-- 回滚到保存点 sp1
ROLLBACK TO sp1;
-- 表中有 3 条数据
SELECT * FROM tab1 ORDER BY a;
A(int) |
------------
100 |
------------
200 |
------------
300 |
总数目:3
-- 回滚整个事务
ROLLBACK;
-- 表中有 2 条数据
SELECT * FROM tab1 ORDER BY a;
A(int) |
------------
100 |
------------
200 |
总数目:2
-- 删除表
DROP TABLE tab1;