4D v16.3SET QUERY AND LOCK |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
4D v16.3
SET QUERY AND LOCK
SET QUERY AND LOCK
SET QUERY AND LOCK コマンドを使用して、カレントのトランザクション中でこのコマンドに引き続き呼び出されるすべてのクエリで見つかったレコードを自動的にロックできます。つまりクエリを行ってから結果を処理するまで、他のプロセスはレコードを変更できなくなることを意味します。 デフォルトで、検索されたレコードはロックされません。ロックを有効にするにはlock引数にTrueを渡します。 このコマンドはトランザクションの中で使用しなければなりません。このコマンドがトランザクションの外側で呼び出されると、エラーが生成されます。このコマンドはレコードロックのより良いコントロールを提供します。検索されたレコードはトランザクションが終了 (有効またはキャンセル) するまでロックされたままとなります。トランザクションが終了すると、レコードのロックは解除されます。 カレントトランザクション中のすべてのテーブルのレコードがロックされます。 SET QUERY AND LOCK(True) 文が実行されると、(QUERYのような) クエリコマンドは、すでにロックされたレコードを見つけると、特定の動作を選択します:
したがって、カレントセレクションが空だったりOK変数が0だった場合、LockedSetをテストして失敗の原因を検証する必要があります。 このメカニズムを無効にするには、SET QUERY AND LOCK(False) を実行します。 SET QUERY AND LOCK は、下記のクエリコマンドの動作を変更します:
これに対してSET QUERY AND LOCKは、ALL RECORDSやRELATE MANY等、テーブルのカレントセレクションを変更する他のコマンドには影響を与えません。 この例題では、CategoryがCに属する顧客は、QUERYとDELETE SELECTIONの間で、他のプロセスから変更や削除はできません。:
START TRANSACTION コマンドがトランザクションのコンテキスト中で呼び出されなかった場合、エラーが生成されます。
参照
|
プロパティ
プロダクト: 4D 履歴
初出: 4D v11 SQL ARTICLE USAGE
ランゲージリファレンス ( 4D v16) |
||||||||||||||||||||||||||||||||||||||||||||||||||||||