暂无图片
暂无图片
1
暂无图片
暂无图片
暂无图片

Halo数据库之SQL命令--ROLLBACK TO SAVEPOINT

原创 贾桂军 2024-04-03
137

ROLLBACK TO SAVEPOINT

ROLLBACK TO SAVEPOINT — 回滚到一个保存点

 

大纲

ROLLBACK [ WORK | TRANSACTION ] TO [ SAVEPOINT ] savepoint_name

 

描述

回滚在该保存点被建立之后执行的所有命令。该保存点保持有效并且可以在  以后再次回滚到它(如果需要)。

ROLLBACK TO SAVEPOINT隐式地销毁在所提及的保存点之后建立的所有保存点。

 

参数

savepoint_name

要回滚到的保存点。

 

注解

使用RELEASE SAVEPOINT销毁一个保存点而不抛弃在它建立之后被执行的命令的效果。

指定一个没有被建立的保存点是一种错误。

相对于保存点,游标有一点非事务的行为。在保存点被回滚时,任何在该保存点内被打开的游标将会被关闭。如果一个先前打开的游标在一个保存点内被FETCH或MOVE命令所影响,而该该保存点后来又被回滚,那么该游标将保持FETCH使它指向的位置(也就是说由FETCH导致的游标动作不会被回滚)。回滚也不能撤销关闭一个游标。不过,其他由游标查询导致的副作用(例如 被该查询所调用的易变函数的副作用)可以被回滚,只要它们发生在一个后来被回滚的保存点期间。如果一个游标的执行导致事务中止,它会被置于一种不能被执行的状态,这样当事务被用ROLLBACK TO SAVEPOINT恢复后,该游标也不再能被使用。

 

示例

要撤销在my_savepoint建立后执行的命令的效果:

ROLLBACK TO SAVEPOINT my_savepoint;

 

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

BEGIN;

DECLARE foo CURSOR FOR SELECT 1 UNION SELECT 2;

SAVEPOINT foo;

FETCH 1 FROM foo;

?column?

1646

ROLLBACK TO SAVEPOINT

----------

1

ROLLBACK TO SAVEPOINT foo;

FETCH 1 FROM foo;

?column?

----------

2

COMMIT;

 

另见

BEGIN, COMMIT, RELEASE SAVEPOINT, ROLLBACK, SAVEPOINT

最后修改时间:2024-04-09 08:36:57
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论