COMMIT ステートメント

COMMIT ステートメントは、作業単位を終了し、 その作業単位で行われたデータベースへの変更をコミットします。

呼び出し

このステートメントは、アプリケーション・プログラムに組み込んだり、動的 SQL ステートメントを使用して発行したりすることができます。 このステートメントは、動的に作成できる実行可能ステートメントです。

許可

必要ありません。

構文

Read syntax diagramSkip visual syntax diagramCOMMITWORK

説明

COMMIT ステートメントが実行される作業単位が終了すると、新しい作業単位が開始されます。 その作業単位で実行された、以下のステートメントによって行われた変更がすべてコミットされます。 ALTER、COMMENT、CREATE、DROP、GRANT、LOCK TABLE、REVOKE、 SET INTEGRITY、およびデータ変更ステートメント (INSERT、DELETE、MERGE、UPDATE)。 クエリー内でネストされているものを含みます。

ただし、以下のステートメントはトランザクションによって制御されず、 これらのステートメントによって行われた変更は COMMIT ステートメントとは独立しています。

  • SET CONNECTION
  • SET ENCRYPTION PASSWORD
  • SET EVENT MONITOR STATE
  • SET PASSTHRU
    注: SET PASSTHRU ステートメントはトランザクションの制御下にありませんが、このステートメントによって開始されたパススルー・セッションはトランザクションの制御下にあります。
  • SET SERVER OPTION
  • SET 変数
  • 更新可能な特殊レジスターへの割り当て

その開始以降に作業単位によって獲得されたロックは、WITH HOLD を宣言されたオープン・カーソルに必要なロック以外のすべてのロックが解放されます。 WITH HOLD を定義されていないすべてのオープン・カーソルはクローズされます。 WITH HOLD を定義されたオープン・カーソルはオープンされたままになり、 そのカーソルは、結果表の次の論理行の前に置かれます。 (位置指定の UPDATE ステートメントまたは DELETE ステートメントが出される前に、 FETCH を実行する必要があります。) LOB ロケーターはすべて解放されます。 WITH HOLD 特性を持つカーソルによって取り出された LOB 値に関連したロケーターも、 すべて解放されます。

パッケージにバインド・オプション KEEPDYNAMIC YES を指定して準備された動的 SQL ステートメントは、COMMIT ステートメントの後に SQL コンテキストに保持されます。 これがデフォルトの動作です。 その作業単位の中でロールバックされる DDL 操作の結果として、そのステートメントは暗黙的に再度準備される場合があります。 パッケージにバインド・オプション KEEPDYNAMIC NO を指定して準備された非アクティブな動的 SQL ステートメントは、COMMIT の後に SQL コンテキストから除去されます。 このステートメントを新しいトランザクションで実行する場合、それを再度準備する必要があります。

トランザクション内に設定されたセーブポイントはすべて解放されます。

以下のステートメントの動作は、他のデータ定義言語 (DDL) ステートメントやデータ制御言語 (DCL) ステートメントの動作と異なります。 これらのステートメントによって行われた変更は、ステートメントがコミットされるまでは有効になりません。これは、ステートメントを発行する現行接続でも同じです。 これらのステートメントはアプリケーションによって一度に 1 つのみ発行され、1 つの作業単位内で 1 つのみ許可されます。 どのステートメントの場合も、発行後に COMMIT ステートメントまたは ROLLBACK ステートメントを発行する必要があります。その後、これらのステートメントの中の別のものを発行することができます。

  • CREATE SERVICE CLASS、ALTER SERVICE CLASS、または DROP (SERVICE CLASS)
  • CREATE THRESHOLD、ALTER THRESHOLD、または DROP (THRESHOLD)
  • CREATE WORK ACTION、ALTER WORK ACTION、または DROP (WORK ACTION)
  • CREATE WORK CLASS、ALTER WORK CLASS、または DROP (WORK CLASS)
  • CREATE WORKLOAD、ALTER WORKLOAD、または DROP (WORKLOAD)
  • GRANT (ワークロード特権) または REVOKE (ワークロード特権)

  • 各アプリケーション・プロセスを終了する前に、 その作業単位を明示的に終了することを強くお勧めします。 アプリケーション・プログラムが COMMIT ステートメントまたは ROLLBACK ステートメントを実行せずに正常に終了すると、 データベース・マネージャーはアプリケーションの環境に応じてコミットまたはロールバックを試みます。
  • キャッシュされた動的 SQL ステートメントに対する COMMIT の影響については、『EXECUTE』を参照してください。
  • 作成済み一時表に対する COMMIT の影響の可能性については、『CREATE GLOBAL TEMPORARY TABLE』を参照してください。
  • 宣言済み一時表に対する COMMIT の影響の可能性については、『DECLARE GLOBAL TEMPORARY TABLE』を参照してください。
  • COMMIT の際、次の動的 SQL ステートメントがアクティブになっている可能性があります。
    • オープン WITH HOLD カーソル
    • COMMIT ステートメント
    • COMMIT ステートメントを実行した CALL ステートメント

最後のコミット・ポイント以降にデータベースに対して行われた変更をコミットします。
   COMMIT WORK