SAVEPOINT

在事务内创建称之为保存点的特殊标记。创建保存点后,它允许回退所有已执行的命令,将事务还原到创建保存点时其所在的状态。

语法

SAVEPOINT savepoint_name

参数

savepoint_name
指定要创建的保存点的名称。

特权

注意

  • 保存点是事务的局部保存点,只能在事务块内时才可创建。

  • 可在事务内定义多个保存点。

  • 如果具有相同名称的保存点已存在,则其会被新保存点替换。

示例

以下示例显示了保存点如何确定事务内可回退的值。创建保存点“my_savepoint”后输入的值 102 和 103 已回退。在提交时仅插入了值 101 和 104。

=> INSERT INTO T1 (product_key) VALUES (101);
=> SAVEPOINT my_savepoint;
=> INSERT INTO T1 (product_key) VALUES (102);
=> INSERT INTO T1 (product_key) VALUES (103);
=> ROLLBACK TO SAVEPOINT my_savepoint;
=> INSERT INTO T1 (product_key) VALUES (104);
=> COMMIT;
=> SELECT product_key FROM T1;
.
.
.
101
104
(2 rows)

另请参阅