SAVEPOINT ステートメントを使用して、トランザクション内にセーブポイントを設定します。
このステートメントは、 アプリケーション・プログラム (プロシージャーを含む) に組み込むこともでき、 対話式に発行することもできます。 このステートメントは、動的に作成できる実行可能ステートメントです。
必要ありません。
>>-SAVEPOINT--savepoint-name--+--------+------------------------> '-UNIQUE-' .-ON ROLLBACK RETAIN LOCKS-. >--ON ROLLBACK RETAIN CURSORS--+--------------------------+----><
CREATE TABLE DEPARTMENT (
DEPTNO CHAR(6),
DEPTNAME VARCHAR(20),
MGRNO INTEGER)
INSERT INTO DEPARTMENT VALUES ('A20', 'MARKETING', 301)
SAVEPOINT SAVEPOINT1 ON ROLLBACK RETAIN CURSORS
INSERT INTO DEPARTMENT VALUES ('B30', 'FINANCE', 520)
SAVEPOINT SAVEPOINT2 ON ROLLBACK RETAIN CURSORS
INSERT INTO DEPARTMENT VALUES ('C40', 'IT SUPPORT', 430)
SAVEPOINT SAVEPOINT3 ON ROLLBACK RETAIN CURSORS
INSERT INTO DEPARTMENT VALUES ('R50', 'RESEARCH', 150)
この時点で、DEPARTMENT 表には A20、B30、C40、および R50 という行があります。
そして、次のステートメントを出すと、
ROLLBACK TO SAVEPOINT SAVEPOINT3
行 R50 が DEPARTMENT 表からなくなります。
そして、次のステートメントを出すと、
ROLLBACK TO SAVEPOINT SAVEPOINT1
DEPARTMENT 表は残っていますが、
SAVEPOINT1 を設定した後に挿入した行 (B30 と C40) が表からなくなります。