SAVEPOINTは、現在のトランザクション内に新しいセーブポイントを確立します。
説明
セーブポイントは、トランザクション内の特別なマークであり、確立後に実行されるすべてのコマンドをロールバックして、トランザクションの状態をセーブポイント時の状態に復元できます。
概要
SAVEPOINT savepoint_nameパラメーター
savepoint_name: 新しいsavepointに付ける名前。 同じ名前のセーブポイントがすでに存在する場合、新しい同じ名前のセーブポイントがリリースされるまでアクセスできません。
注
セーブポイントにロールバックするには、ROLLBACKを使用します。
RELEASE SAVEPOINTを使用してセーブポイントを破棄し、確立後に実行されたコマンドの効果を維持します。Savepointsは、トランザクションブロック内にある場合にのみ確立できます。 トランザクション内に複数のセーブポイントを定義することができる。
例
セーブポイントを確立し、確立後に実行されたすべてのコマンドの効果を後で元に戻すには:
BEGIN;
table1値に挿入 (1);
SAVEPOINT my_savepoint;
table1値に挿入する (2);
SAVEPOINTにロールバックmy_savepoint;
table1値に挿入する (3);
コミット; 上記のトランザクションは値1と3を挿入しますが、2は挿入しません。
セーブポイントを確立して後で破壊するには:
BEGIN;
table1値に挿入する (3);
SAVEPOINT my_savepoint;
table1値に挿入する (4);
リリースSAVEPOINT my_savepoint;
コミット; 上記のトランザクションは3と4の両方を挿入します。