在当前事务中定义新保存点。
语法
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 表的内容会被回滚。