VastbaseE100

基于开源技术的HTAP数据库管理系统。性能优异,稳定可靠,提供诸多专属领域特性。

Menu

ROLLBACK TO SAVEPOINT

ROLLBACK TO SAVEPOINT - 回滚到保存点

语法格式

ROLLBACK [ WORK | TRANSACTION ] TO [ SAVEPOINT ] savepoint_name

说明

回滚保存点 Build后执行的所有命令。保存点仍然有效,如果需要,可以稍后再次回滚。

ROLLBACK TO SAVEPOINT 隐式销毁在命名保存点之后 Build 的所有保存点。

参数说明

  • savepoint_name

    要回滚的保存点。

注意事项

使用 RELEASE SAVEPOINT销毁保存点,而不会丢弃 Build后执行的命令的影响。

指定尚未 Build 的保存点名称是错误的。

游标在保存点方面有一些非事务性行为。回滚保存点时,将关闭保存点内打开的任何游标。如果先前打开的游标受到稍后回滚的保存点内的FETCH 或 MOVE 命令的影响,则游标将保持在 FETCH 指向的位置(即,不回滚由FETCH引起的游标运动)。关闭游标也不会通过回滚来撤消。但是,如果在稍后回滚的保存点期间发生由游标查询引起的其他副作用(例如查询调用的易失性函数的副作用),则会回滚这些副作用。执行导致事务中止的游标被置于无法执行状态,因此虽然可以使用ROLLBACK TO SAVEPOINT 恢复事务,但不能再使用游标。

示例

要撤消 my_savepoint Build 后执行的命令的效果:

ROLLBACK TO SAVEPOINT my_savepoint;

保存点回滚不影响游标位置:

BEGIN;

DECLARE foo CURSOR FOR SELECT 1 UNION SELECT 2;

SAVEPOINT foo;

FETCH 1 FROM foo;
 ?column? 
----------
        1

ROLLBACK TO SAVEPOINT foo;

FETCH 1 FROM foo;
 ?column? 
----------
        2

COMMIT;