更新时间:2024-11-12 GMT+08:00
分享

RELEASE SAVEPOINT

功能描述

RELEASE SAVEPOINT删除一个当前事务先前定义的保存点。

把一个保存点删除就令其无法作为回滚点使用,除此之外它没有其它用户可见的行为。它并不能撤销在保存点建立起来之后执行的命令的影响,要撤销那些命令可以使用ROLLBACK TO SAVEPOINT 。当不再需要的时候删除一个保存点可以令系统在事务结束之前提前回收一些资源。

RELEASE SAVEPOINT也删除所有在指定的保存点建立之后的所有保存点。

注意事项

  • 不能RELEASE一个没有定义的保存点,语法上会报错。
  • 如果事务在回滚状态,则不能释放保存点。
  • 如果多个保存点拥有同样的名称,只有最近定义的才被释放。

语法格式

RELEASE [ SAVEPOINT ] savepoint_name;

参数说明

  • savepoint_name

    要删除的保存点的名称

示例

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
--创建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;

相关文档