DROP SAVEPOINT¶
说明¶
删除一个保存点
参数¶
savepoint_name
保存点的名字。
注解
如果此时不在一个事务中,或者名为 savepoint_name 的保存点不存在,将出错。
当删除一个保存点时,该保存点之后的保存点将同时被删除。
示例¶
示例1: 删除保存点
-- 清理环境
DROP TABLE tab1 CASCADE;
-- 创建表并数据
CREATE TABLE tab1(a INT);
INSERT INTO tab1 VALUES(100);
SELECT * FROM tab1 ORDER BY a;
A(int) |
------------
100 |
总数目:1
-- 开启一个事务
BEGIN;
INSERT INTO tab1 VALUES(200);
-- 设置保存点 sp1
SAVEPOINT sp1;
INSERT INTO tab1 VALUES(201);
SELECT * FROM tab1 ORDER BY a;
A(int) |
------------
100 |
------------
200 |
------------
201 |
总数目:3
-- 设置保存点 sp2
SAVEPOINT sp2;
INSERT INTO tab1 VALUES(202);
SELECT * FROM tab1 ORDER BY a;
A(int) |
------------
100 |
------------
200 |
------------
201 |
------------
202 |
总数目:4
-- 删除保存点 sp2
DROP SAVEPOINT sp2;
SELECT * FROM tab1 ORDER BY a;
A(int) |
------------
100 |
------------
200 |
------------
201 |
------------
202 |
总数目:4
-- 回滚到 sp1 —— 成功
ROLLBACK TO sp1;
SELECT * FROM tab1 ORDER BY a;
A(int) |
------------
100 |
------------
200 |
总数目:2
-- 回滚事务
ROLLBACK;
SELECT * FROM tab1 ORDER BY a;
A(int) |
------------
100 |
总数目:1
-- 删除表
DROP TABLE tab1;