
# RELEASE SAVEPOINT
#### 功能描述
RELEASE SAVEPOINT语句用于删除一个当前事务先前定义的保存点。
把一个保存点删除就令其无法作为回滚点使用，除此之外它没有其它用户可见的行为。它并不能撤销在保存点建立起来之后执行的命令的影响，要撤销那些命令可以使用ROLLBACK TO SAVEPOINT 。当不再需要的时候，删除一个保存点可以令系统在事务结束之前提前回收一些资源。
RELEASE SAVEPOINT也删除所有在指定的保存点建立之后的所有保存点。
#### 注意事项
- 不能RELEASE一个没有定义的保存点，语法上会报错。
- 如果事务在回滚状态，则不能释放保存点。
- 如果多个保存点拥有同样的名称，只有最近定义的才被释放。
 
#### 语法格式
```
RELEASE [ SAVEPOINT ] savepoint_name;
```
![](https://support.huaweicloud.com/centralized-devg-v8-gaussdb/figure/zh-cn_image_0000002558059551.png)
#### 参数说明
- **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;
```
#### 相关链接
[SAVEPOINT](https://support.huaweicloud.com/centralized-devg-v8-gaussdb/gaussdb-42-0679.html#ZH-CN_TOPIC_0000002558948185)，[ROLLBACK TO SAVEPOINT](https://support.huaweicloud.com/centralized-devg-v8-gaussdb/gaussdb-42-0677.html#ZH-CN_TOPIC_0000002559108087)
