YMatrix 文档
快速上手
集群部署
SQL参考
- ABORT
- ALTER_DATABASE
- ALTER_EXTENSION
- ALTER_EXTERNAL_TABLE
- ALTER_FOREIGN_DATA_WRAPPER
- ALTER_FOREIGN_TABLE
- ALTER_FUNCTION
- ALTER_INDEX
- ALTER_RESOURCE_GROUP
- ALTER_RESOURCE_QUEUE
- ALTER_ROLE
- ALTER_RULE
- ALTER_SCHEMA
- ALTER_SEQUENCE
- ALTER_SERVER
- ALTER_TABLE
- ALTER_TABLESPACE
- ALTER_TYPE
- ALTER_USER_MAPPING
- ALTER_VIEW
- ANALYZE
- BEGIN
- CHECKPOINT
- COMMIT
- COPY
- CREATE_DATABASE
- CREATE_EXTENSION
- CREATE_EXTERNAL_TABLE
- CREATE_FOREIGN_DATA_WRAPPER
- CREATE_FOREIGN_TABLE
- CREATE_FUNCTION
- CREATE_INDEX
- CREATE_RESOURCE_GROUP
- CREATE_RESOURCE_QUEUE
- CREATE_ROLE
- CREATE_RULE
- CREATE_SCHEMA
- CREATE_SEQUENCE
- CREATE_SERVER
- CREATE_TABLE
- CREATE_TABLE_AS
- CREATE_TABLESPACE
- CREATE_TYPE
- CREATE_USER_MAPPING
- CREATE_VIEW
- DELETE
- DROP_DATABASE
- DROP_EXTENSION
- DROP_EXTERNAL_TABLE
- DROP_FOREIGN_DATA_WRAPPER
- DROP_FOREIGN_TABLE
- DROP_FUNCTION
- DROP_INDEX
- DROP_RESOURCE_GROUP
- DROP_RESOURCE_QUEUE
- DROP_ROLE
- DROP_RULE
- DROP_SCHEMA
- DROP_SEQUENCE
- DROP_SERVER
- DROP_TABLE
- DROP_TABLESPACE
- DROP_TYPE
- DROP_USER_MAPPING
- DROP_VIEW
- END
- EXPLAIN
- GRANT
- INSERT
- LOAD
- LOCK
- REINDEX
- RELEASE_SAVEPOINT
- RESET
- REVOKE
- ROLLBACK_TO_SAVEPOINT
- ROLLBACK
- SAVEPOINT
- SELECT INTO
- SET ROLE
- SET TRANSACTION
- SET
- SHOW
- START TRANSACTION
- TRUNCATE
- UPDATE
- VACUUM
工具指南
ROLLBACK TO SAVEPOINT
将当前事务回滚到保存点。
概要
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标准。