400-800-0824
info@ymatrix.cn
400-800-0824
info@ymatrix.cn
400-800-0824
info@ymatrix.cn
400-800-0824
info@ymatrix.cn
400-800-0824
info@ymatrix.cn
YMatrix 文档
关于 YMatrix
标准集群部署
数据写入
数据迁移
数据查询
运维监控
参考指南
工具指南
数据类型
存储引擎
执行引擎
系统配置参数
SQL 参考
常见问题(FAQ)
新架构 FAQ
集群部署 FAQ
SQL 查询 FAQ
MatrixGate FAQ
运维 FAQ
监控告警 FAQ
PXF FAQ
PLPython FAQ
性能 FAQ
将当前事务回滚到保存点。
ROLLBACK [WORK | TRANSACTION] TO [SAVEPOINT]
savepoint_name
此命令将回滚在建立保存点之后执行的所有命令。 该保存点保持有效,可以稍后在需要时回滚。
ROLLBACK TO SAVEPOINT隐式销毁在指定保存点之后建立的所有保存点。
WORK
TRANSACTION
savepoint_name
使用RELEASE SAVEPOINT销毁一个保存点,而不会丢弃建立该保存点后执行的命令的效果。
指定尚未建立的保存点名称是错误的。
游标相对于保存点具有某种非事务性的行为。 当回滚保存点时,在保存点内部打开的所有游标都将关闭。 如果先前打开的游标受保存点内的FETCH命令影响, 该保存点随后被回滚,则该游标仍将保持在FETCH指向的位置(即,由FETCH引起的光标运动不会回滚)。 关闭游标也不会通过回滚来撤消。 但是,如果游标的查询所引起的其他副作用(例如查询所调用的volatile函数的副作用)在保存点期间发生, 然后又回滚,则这些副作用也会被回滚。 由于其执行导致事务中止的游标处于无法执行状态, 因此尽管可以使用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
----------
1
ROLLBACK TO SAVEPOINT foo;
FETCH 1 FROM foo;
column
----------
2
COMMIT;
SQL标准指定关键字SAVEPOINT是必需的,但是 YMatrix 数据库(和Oracle)允许省略它。 SQL在ROLLBACK之后只允许WORK,而不允许TRANSACTION作为干扰词。 此外,SQL具有可选子句AND [NO] CHAIN,YMatrix 数据库当前不支持该子句。 在其他方面,此命令符合SQL标准。