在當前事務中定義新保存點。

語法

SAVEPOINT savepoint_name

說明

SAVEPOINT 在當前事務中建立新保存點。

保存點是指事務中的特殊標記,它允許回滾在建立它之后執行的所有命令,以將事務狀態恢復到保存點時刻的狀態。

參數

參數 說明
savepoint_name 為保存點給出的名稱。

注釋

使用 ROLLBACK TO SAVEPOINT 可回滾到保存點。

只能在事務塊中建立保存點。可以在一個事務中定義多個保存點。

在建立與前一個保存點同名的另一個保存點后,會保留舊保存點,但在回滾時僅使用更新的保存點。

在 SPL 程序中不支持 SAVEPOINT

示例

建立保存點,并在之后撤消在建立它之后執行的所有命令的影響:

\set AUTOCOMMIT off
INSERT INTO dept VALUES (50, 'HR', 'NEW YORK');
SAVEPOINT depts;
INSERT INTO emp (empno, ename, deptno) VALUES (9001, 'JONES', 50);
INSERT INTO emp (empno, ename, deptno) VALUES (9002, 'ALICE', 50);
SAVEPOINT emps;
INSERT INTO jobhist VALUES (9001,'17-SEP-07',NULL,'CLERK',800,NULL,50,'New Hire');
INSERT INTO jobhist VALUES (9002,'20-SEP-07',NULL,'CLERK',700,NULL,50,'New Hire');
ROLLBACK TO depts;
COMMIT;

以上事務會將一行提交到 dept 表中,但插入 emp 和 jobhist 表的內容會被回滾。