ホーム > 高度なプログラミング手法 > DMLロックについて
前へ |
次へ |
自動的なデータ操作言語(DML)が表内の行を更新または削除するためにOracle Application Expressで使用される場合、トランザクションが開始されるとまず行をロックし、ページに表示されてから変更されたかどうかを確認して、最後に行に対するUPDATE
またはDELETE
文を発行します。
行のロックが頻繁に発生する一部の環境では、DML操作を制御してDML操作が次の状態かどうかを判別する場合があります。
無期限に待機
即時に失敗
指定した一定時間待機
アプリケーション置換文字列、アプリケーション・アイテムまたはページ・アイテムの値をAPEX_DML_LOCK_WAIT_TIME
に設定すると、DML操作を制御できます。次の値がサポートされています。
NULLの場合(デフォルト)、Oracle Application Expressの以前のバージョンと同じ動作、つまり、無期限に待機します。
0の場合、他のデータベース・セッションによって行がロックされていると、即時に失敗します。
0以上で行がロックされている場合、指定した秒数間待機します。
アプリケーションで設定する場合、APEX_DML_LOCK_WAIT_TIME
の値はアプリケーション全体の自動DMLを使用するすべてのUPDATE
およびDELETE
DML操作に適用されます。特定の自動DMLプロセスを制御するには、自動DMLプロセスの前にAPEX_DML_LOCK_WAIT_TIME
の値を更新して、自動DMLプロセスの後にリセットします。これは、表形式フォームを使用した更新および削除には影響しないことに注意してください。
アプリケーション置換文字列、アプリケーション・アイテムまたはページ・アイテムの値をFSP_DML_LOCK_ROW
に設定して、DML操作を制御することもできます。次の値がサポートされています。
値をFALSE
に設定すると、SELECT FOR UPDATE
は発行されません。
値がFALSE
以外の場合は、自動DMLを使用してUPDATE
またはDELETE
DML操作を発行すると、SELECT FOR UPDATE
のデフォルトの動作が実行されます。