DROP SAVEPOINT

说明

删除一个保存点

语法

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;