RELEASE SAVEPOINT
功能描述
RELEASE SAVEPOINT语句用于删除一个当前事务先前定义的保存点。
把一个保存点删除就令其无法作为回滚点使用,除此之外它没有其它用户可见的行为。它并不能撤销在保存点建立起来之后执行的命令的影响,要撤销那些命令可以使用ROLLBACK TO SAVEPOINT 。当不再需要的时候,删除一个保存点可以令系统在事务结束之前提前回收一些资源。
RELEASE SAVEPOINT也删除所有在指定的保存点建立之后的所有保存点。
注意事项
- 不能RELEASE一个没有定义的保存点,语法上会报错。
- 如果事务在回滚状态,则不能释放保存点。
- 如果多个保存点拥有同样的名称,只有最近定义的才被释放。
语法格式
RELEASE [ SAVEPOINT ] savepoint_name;
参数说明
- savepoint_name
要删除的保存点的名称。
示例
--创建SCHEMA。 gaussdb=# CREATE SCHEMA tpcds; --创建一个新表。 gaussdb=# CREATE TABLE tpcds.table1(a int); --开启事务。 gaussdb=# START TRANSACTION; --插入数据。 gaussdb=# INSERT INTO tpcds.table1 VALUES (3); --建立保存点。 gaussdb=# SAVEPOINT my_savepoint; --插入数据。 gaussdb=# INSERT INTO tpcds.table1 VALUES (4); --删除保存点。 gaussdb=# RELEASE SAVEPOINT my_savepoint; --查询表的内容,会同时看到3和4。 gaussdb=# SELECT * FROM tpcds.table1; a --- 3 4 (2 rows) --提交事务。 gaussdb=# COMMIT; --再次查询表的内容,会同时看到3和4。 gaussdb=# SELECT * FROM tpcds.table1; a --- 3 4 (2 rows) --删除表。 gaussdb=# DROP TABLE tpcds.table1; --删除SCHEMA。 gaussdb=# DROP SCHEMA tpcds CASCADE;