在當前事務中定義新保存點。
語法
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 表的內容會被回滾。