SAVEPOINT、SAVE TRANSACTION、RELEASE [TO] SAVEPOINT

トランザクションの保存ポイントを設定します。現在のトランザクションを部分的なロールバックとしてそのポイントまでロールバックできます。

構文:

>>---EXEC SQL--.------------.--SAVEPOINT-name--.------.-->
               +-AT db_name-+                  +UNIQUE+

 >--.-----------------------------------------------------------.---END-EXEC---><  
    +--ON ROLLBACK RETAIN CURSORS--.----------------------------+
                                   +--ON ROLLBACK RETAIN LOCKS--+

>>---EXEC SQL--.------------.--SAVE-.-TRANSACTION--.--name-- END-EXEC---><  
               +-AT db_name-+       +-TRAN---------+

>>---EXEC SQL--.------------.--RELEASE-.----.-SAVEPOINT-name---END-EXEC---><  
               +-AT db_name-+          +-TO-+

パラメーター:

AT db_name DECLARE DATABASE を使用して宣言されたデータベースの名前。この句は必須ではありません。省略すると、DECLARE CURSOR 文に関連付けられている接続に自動的に切り替わります (その接続が現在の接続とは異なる場合。DECLARE CURSOR 文の実行中のみ有効)。

制約事項:

SQL Server では fire hose カーソルを使用した保存ポイントは許可されないため、 保存ポイントを含む SQL Server アプリケーションをコンパイルする場合には、RO_CURSOR=FF プリミティブ指令を設定して BEHAVIOR 指令を指定する必要があります。

説明:

1 つのトランザクションで複数の保存ポイントを定義できます。

一意の名前を使用して保存ポイントを設定し、さらに別の保存ポイントを同じ一意の名前で保存すると、名前を付けたその保存ポイントは現在のトランザクション状態にリセットされます。

保存ポイントにロールバックした後のカーソルとロックの動作は、データベース特有の動作になります。詳細は、データベースのベンダーから提供されるドキュメントを参照してください。

例:

EXEC SQL
   SAVEPOINT SP1
END-EXEC

EXEC SQL
    SAVEPOINT PHASE2 ON ROLLBACK RETAIN CURSORS
END-EXEC