プライマリ・コンテンツに移動

Oracle® Application Expressアプリケーション・ビルダー・ユーザーズ・ガイド リリース5.1 E83810-03 |
| 目次 | 索引

前 | 次 |

# 17.5 DMLロックについて

この項では、Oracle Application Expressで自動的なデータ操作言語(DML)を使用して、表の行を更新または削除する方法について説明します。

トピック:

- DMLロックについて
- APEX_DML_LOCK_WAIT_TIME
- FSP_DML_LOCK_ROW

## 17.5.1 DMLロックについて

Oracle Application Expressで自動的なデータ操作言語(DML)を使用して表内の行を更新または削除すると、トランザクションが開始され、最初に行をロックして、その行がページに表示されてから変更されたかどうかを確認し、最後に行に対する実際の`UPDATE`文または`DELETE`文を発行します。

行のロックが頻繁に発生する一部の環境では、DML操作を制御してDML操作が次の状態かどうかを判別する場合があります。

- 無期限に待機

- 即時に失敗

- 指定した一定時間待機

## 17.5.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プロセスの後にリセットします。これは、表形式フォームを使用した更新および削除には影響しないことに注意してください。

## 17.5.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`のデフォルトの動作が実行されます。