SAVEPOINT

Name

SAVEPOINT -- は、現在のトランザクション内で新しいセーブポイントを定義します

Synopsis

SAVEPOINT <savepoint_name>

Description

SAVEPOINT は、現在のトランザクション内に新しいセーブポイントを確立します。

セーブポイントは、トランザクション内の特別なマークであり、確立後に実行されたすべてのコマンドをロールバックし、トランザクションの状態をセーブポイントの時点の状態に復元できます。

Parameters

savepoint_name

セーブポイントに付けられる名前。

Notes

ROLLBACK TO SAVEPOINT を使用して、セーブポイントにロールバックします。

セーブポイントは、トランザクションブロック内でのみ確立できます。トランザクション内で複数のセーブポイントを定義できます。

前のセーブポイントと同じ名前で別のセーブポイントが確立されると、古いセーブポイントが保持されますが、ロールバック時には最新のセーブポイントのみが使用されます。

SAVEPOINT はSPLプログラム内ではサポートされていません。

Examples

セーブポイントを確立し、その後、確立後に実行されたすべてのコマンドの効果を元に戻すには:

\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 テーブルへの挿入はロールバックされます。

See Also

COMMIT、 ROLLBACK、 ROLLBACKTOSAVEPOINT