18.8 DMLロックについて

Oracle Application Expressで自動的なデータ操作言語(DML)を使用して、表の行を更新または削除します。

18.8.1 DMLロックについて

Oracle Application Expressで自動的なデータ操作言語(DML)を使用して、表の行を更新または削除します。

Application Expressで自動DMLを使用して表の行を更新または削除する場合、次のことを行うトランザクションが開始されます。

  • 行をロックする。

  • 行がページに表示されてから変更されたかどうかを検証する。

  • 行に対する実際のUPDATE文またはDELETE文を発行する。

行のロックが頻繁に発生する環境では、DML操作を制御し、DML操作が無期限に待機するか、即時に失敗するか、または指定した期間待機するかを決定できます。

18.8.2 APEX_DML_LOCK_WAIT_TIME

アプリケーション置換文字列、アプリケーション・アイテムまたはページ・アイテムの値をAPEX_DML_LOCK_WAIT_TIMEに設定して、DML操作を制御します。

APEX_DML_LOCK_WAIT_TIMEでは次の値がサポートされます。

  • NULLの場合(デフォルト)、Oracle Application Expressの以前のバージョンと同じ動作、つまり、無期限に待機します。

  • 0の場合、他のデータベース・セッションによって行がロックされていると、即時に失敗します。

  • 0より大きな値で行がロックされている場合、指定した秒数間待機します。

アプリケーションで設定する場合、APEX_DML_LOCK_WAIT_TIMEの値はアプリケーション全体の自動DMLを使用するすべてのUPDATEおよびDELETE DML操作に適用されます。特定の自動DMLプロセスを制御するには、自動DMLプロセスの前にAPEX_DML_LOCK_WAIT_TIMEの値を更新して、自動DMLプロセスの後にリセットします。これは、表形式フォームを使用した更新および削除には影響しないことに注意してください。

18.8.3 FSP_DML_LOCK_ROW

アプリケーション置換文字列、アプリケーション・アイテムまたはページ・アイテムの値をFSP_DML_LOCK_ROWに設定して、DML操作を制御します。

FSP_DML_LOCK_ROWでは次の値がサポートされます。

  • 値をFALSEに設定すると、SELECT FOR UPDATEは発行されません。

  • 値がFALSE以外の場合は、自動DMLを使用してUPDATEまたはDELETE DML操作を発行すると、SELECT FOR UPDATEのデフォルトの動作が実行されます。