保存点级别
GBase 8s 支持构造嵌套的保存点级别。单个 SQL 事务可有多个保存点级别。在执行 SPL 例程或
外部 UDR 期间,自动地创建新的保存点级别。递归地调用相同的 SPL 例程或 UDR 还增长当前
事务的保存点级别。
当在其被创建的 UDR 中完成执行时,保存点级别终止。当保存点级别终止时,自动地释放在它之
内的所有保存点。父保存点级别继承任何 DDL 或 DML 修改(即,到在其内创建了刚刚终止的那
个保存点级别),并受任何针对该父保存点级别发出的保存点相关的语句支配。
下列规则适用于保存点级别之内的活动:
仅可在保存点被创建的那个保存点级别之内引用保存点。您不可释放、销毁或回滚到在当
前保存点级别之外创建的保存点。
保存点名称的唯一性仅在当前的保存点级别之内是强制的。在其他保存点级别中为活动的保存点的
名称可在当前的保存点级别中重用,而不影响其他保存点级别中的那些保存点。
在分布式 SQL 事务中的保存点
如果所有参与的数据库支持事务日志记录,则保存点在支持事务的单个 GBase 8s 实例的跨数据库
分布式 SQL 事务中是有效的。在跨数据库 SQL 事务中还支持保存点,包括在高可用性集群中的
操作,如果所有参与的 GBase 8s 实例支持保存点,且在该事务中访问的所有数据库都使用日志记
录的话。
然而,如果在跨数据库事务中的任何参与的数据库服务器不支持保存点,且在可支持保存点的协调
者与不支持保存点的从属服务器之间建立了连接,则在分布式会话之内的任何 ROLLBACK TO
SAVEPOINT 语句都失败并报错。