使用 RELEASE SAVEPOINT 语句来销毁指定的保存点。RELEASE SAVEPOINT 语句符合 SQL 的 ANSI/ISO 标准。
RELEASE SAVEPOINT 语句销毁指定的保存点。还销毁在当前的保存点级别中那个保存点与 RELEASE SAVEPOINT 语句之间的任何保存点设置。然而,在当前的保存点级别中设置早于指定的保存点的保存点继续为活动的。
RELEASE SAVEPOINT 销毁的任何保存点的标识符可在同一保存点级别的后续的 SAVEPOINT 语句中重用,即使通过包括 UNIQUE 关键字的 SAVEPOINT 语句设置了该释放的保存点。
由于保存点为程序对象,而不是数据库对象,因此 RELEASE SAVEPOINT 语句对数据库或其系统目录表没有直接的影响。然而,RELEASE SAVEPOINT 可间接地影响用户表和系统目录,如果它更改后续的 ROLLBACK TO SAVEPOINT 操作的作用域,该操作在当前保存点级别的不同部分内,取消对数据库的未提交的更改,如下例所示。
BEGIN WORK; CREATE DATABASE third_base IN db3 WITH BUFFERED LOG; SAVEPOINT sp46; CREATE TABLE tab1 ( col1 INT, col2 CHAR(24)); SAVEPOINT sp45 UNIQUE; ... CREATE TABLE tab2 ( col1 INT8, col2 LVARCHAR(24000)); SAVEPOINT sp44; ... RELEASE SAVEPOINT sp45; ROLLBACK TO SAVEPOINT;在此示例中 RELEASE SAVEPOINT 语句的作用是销毁两个保存点,sp45 和 sp44。如果仅保留当前的保存点级别中的保存点为 sp46,则后续的 ROLLBACK TO SAVEPOINT 语句取消那些创建了 tab1 和 tab2 的 DDL 语句,并取消对那些在 ROLLBACK 语句之前的表的任何 DML 操作。然而,回滚不取消创建 third_base 数据库的 CREATE DATABASE 语句。没有 RELEASE SAVEPOINT 语句,创建了 tab1 的 CREATE TABLE 语句可能已被取消,因为 GBase 8s 可能已经将 sp44 处理作为 ROLLBACK 语句的 TO SAVEPOINT 子句的缺省的保存点。