TFDConnectionオプション|ロック処理

  • 2
    いいね
  • 0
    コメント

FireDAC TFDConnectionのオプション部ロック処理について

TFDUpdateOptions クラスは、FireDAC データセットと DApt レイヤ アダプタ インターフェイスが以下の処理をどう行うかを制御する、一連のプロパティを表します
データベース レコードのロックはLockMode、LockPoint、LockWaitです。
2017-05-260952.png

ロックポイント(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 ロック。

TFDLockMode

ロックを使用すると、異なる DBMS セッションから同じレコードを更新する際に発生する競合を解決できます。

名前 説明
lmNone ロックはまったく行われません。
lmPessimistic DBMS で SELECT FOR UPDATE がサポートされている場合は悲観的ロックが使用され、そうでない場合は楽観的ロックが使用されます。レコードがロックされた場合は、DBMS でロック タイムアウトがサポートされていれば、FireDAC は一定時間(LockWait)待機し、そうでなければ、DBMS の設定によって処置が決まります。
lmOptimistic 楽観的ロックが使用されます。

参考URL

https://community.embarcadero.com/blogs/entry/tfdconnection-japan