SQL 解説書
SAVEPOINT ステートメントを使用して、トランザクション内に保管点を設定します。
呼び出し
このステートメントは、
アプリケーション・プログラム (ストアード・プロシージャーを含む) に組み込むこともでき、
対話式に発行することもできます。
このステートメントは、動的に準備可能な実行可能ステートメントです。
許可
権限は不要です。
構文
>>-SAVEPOINT--savepoint-name----+---------+--------------------->
'-UNIQUE--'
.-ON ROLLBACK RETAIN LOCKS--.
>----ON ROLLBACK RETAIN CURSORS--+---------------------------+--><
説明
- savepoint-name
- savepoint (保管点) の名前を指定します。
- UNIQUE
- UNIQUE 保管点を指定すると、保管点が活動中の間、
この保管点の名前がアプリケーションによって再使用されないことを示します。
- ON ROLLBACK RETAIN CURSORS
- SAVEPOINT ステートメントの後に処理されるオープン・カーソルのステートメントに関して、
この保管点へのロールバックでのシステムの動作を指定します。
ここで、RETAIN CURSORS 文節は、
保管点へのロールバックにおいて、可能な限りカーソルを変更しないことを示します。
どのような場合にカーソルが保管点へのロールバックから影響を受けるかについては、
ROLLBACKを参照してください。
- ON ROLLBACK RETAIN LOCKS
- 保管点の設定後にかけられるロックに関して、
この保管点へのロールバックでのシステムの動作を指定します。
この保管点以降に掛けられたロックは、
この保管点へのロールバックでは追跡およびロールバック (解放) されません。
規則
- 保管点をネストすることはできません。
すでに確立された保管点が存在している状態で SAVEPOINT ステートメントを実行すると、
エラーが戻されます (SQLSTATE 3B002)。
注
- UNIQUE キーワードは、DB2 ユニバーサル・データベース (OS/390 版) と互換性を持つシステムで使用します。
DB2 ユニバーサル・データベース (OS/390 版) における動作について以下に説明します。
保管点の名前 savepoint-name がトランザクション内にすでに存在していると、
エラーが戻されます (SQLSTATE 3B501)。
UNIQUE 文節を省略してステートメントが実行された場合は、
アプリケーションがトランザクション内でこの保管点の名前を再使用する可能性があります。
指定された savepoint-name がトランザクション内に存在しているときは、
既存の保管点が破棄され、savepoint-name の名前で新しい保管点が作成されます。
他の保管点で名前を再使用するために保管点が破棄されるのと、
RELEASE SAVEPOINT ステートメントによって古い保管点が解放されるのとは異なります。
名前の再使用によって保管点が破棄される場合、破棄されるのはその保管点だけです。
一方 RELEASE SAVEPOINT ステートメントを使用して保管点を解放した場合は、
指定された保管点だけでなく、その保管点より後に確立されたすべての保管点が解放されます。
- ある保管点において、処理の途中でユーティリティー、SQL、
または DB2 コマンドが断続的に COMMIT ステートメントを実行した場合、
その保管点は暗黙的に解放されます。
- SQL ステートメント SET INTEGRITY は、
保管点における DDL ステートメントと同じ働きをします。
- アプリケーションでは、
挿入がバッファーに入れられる場合があります (アプリケーションが INSERT BUF オプションでプリコンパイルされた場合)。
バッファーは、SAVEPOINT、ROLLBACK、
または RELEASE TO SAVEPOINT ステートメントが出されるとフラッシュされます。
[ ページのトップ | 前ページ | 次ページ | 目次 | 索引 ]