SAVEPOINT ステートメントは、トランザクションの途中に「セーブポイント」を設定します。設定したセーブポイントまで、トランザクションをロールバックさせることが可能です。セーブポイントはオプションであり、1つのトランザクション内で複数のセーブポイントを設定することができます。
セーブポイントの設定
トランザクションが開始された後、以下のステートメントを使用してセーブポイントを設定できます。
SAVEPOINT pointname;
ここで、pointname はトランザクションのセーブポイント名を表します。
以下の例では、トランザクションを開始し、複数のセーブポイントを設定します。
obclient [SYS]> SET session autocommit=off;
Query OK, 0 rows affected
obclient [SYS]> BEGIN;
Query OK, 0 rows affected
obclient [SYS]> INSERT INTO ordr(id, name) VALUES(6,'FR');
Query OK, 1 row affected
obclient [SYS]> SAVEPOINT fr;
Query OK, 0 rows affected
obclient [SYS]> INSERT INTO ordr(id, name) VALUES(7,'RU');
Query OK, 1 row affected
obclient [SYS]> SAVEPOINT ru;
Query OK, 0 rows affected
obclient [SYS]> INSERT INTO ordr(id, name) VALUES(8,'CA');
Query OK, 1 row affected
obclient [SYS]> SAVEPOINT ca;
Query OK, 0 rows affected