
FireDAC TFDConnectionのオプション部ロック処理について
TFDUpdateOptions クラスは、FireDAC データセットと DApt レイヤ アダプタ インターフェイスが以下の処理をどう行うかを制御する、一連のプロパティを表します
データベース レコードのロックはLockMode、LockPoint、LockWaitです。
[ロックポイント(LockPoint)]
データベース レコードがロックされるタイミングを制御します。
LockPoint を使用すると、変更されたデータベース レコードがデータベースでロックされ、内部データ ストレージでロック済みとしてマークされるタイミングを指定することができます。
デフォルト値は、lpDeferred です。
lpImmediate | レコードを編集または削除を開始した直後に、レコードをロック。 |
lpDeferred | 更新をデータベースに送信する直前に、レコードをロック。 |
[ロック待機(LockWait)]
pessimistic ロックを取得する際に待機するかどうかを制御します。
LockWait プロパティを使用すると、FireDAC は、pessimistic ロックが取得されている間待機するか(True)、レコードがロックされている場合には即座にエラーを返すか(False)を制御することができます。デフォルト値は False です。
LockWait プロパティは、LockMode = lmPessimistic の場合にのみ、使用されます。
[ロックモード(LockMode)]
FireDAC が、データベース レコードの編集時に、それをどのようにロックするかを制御します。
LockMode プロパティを使用すると、データベース レコードのロック モードを指定することができます。
ロックを使用して、異なる DBMS セッションから同じレコードへの更新競合を、解決することができます。デフォルト値は、lmNone です。
lmNone | 全くロックしない。 |
lmPessimistic | DBMS が SELECT FOR UPDATE をサポートしている場合は pessimistic ロック、そうでなければ、optimistic ロックが使用されます。レコードがロックされた場合、FireDAC は、DBMS がロック タイムアウトをサポートしている場合には、一定期間待機し(LockWait)、そうでなければ、動作は DBMS の設定に依存します。 |
lmOptimistic | ロック。 |
ロックを使用すると、異なる DBMS セッションから同じレコードを更新する際に発生する競合を解決できます。
lmNone | ロックはまったく行われません。 |
lmPessimistic | DBMS で SELECT FOR UPDATE がサポートされている場合は悲観的ロックが使用され、そうでない場合は楽観的ロックが使用されます。レコードがロックされた場合は、DBMS でロック タイムアウトがサポートされていれば、FireDAC は一定時間(LockWait)待機し、そうでなければ、DBMS の設定によって処置が決まります。 |
lmOptimistic | 楽観的ロックが使用されます。 |