SET QUERY AND LOCK

4D - Documentation   French   English   German   Spanish   日本語   4D v11 SQLコマンドテーマリスト   4D v11 SQLインデックス   4D v11 SQL定数テーマリスト   戻る   前   次

version 11


SET QUERY AND LOCK (lock)

引数説明
lockブールTrue = クエリで見つけたレコードをロック
False = レコードをロックしない

説明

SET QUERY AND LOCK コマンドを使用して、カレントのトランザクション中でこのコマンドに引き続き呼び出されるすべてのクエリで見つかったレコードを自動的にロックすることができます。つまりクエリを行ってから結果を処理するまで、他のプロセスはレコードを変更できなくなることを意味します。

デフォルトで、検索されたレコードはロックされません。ロックを有効にするにはlock引数にTrueを渡します。

このコマンドはトランザクションの中で使用しなければなりません。このコマンドがトランザクションの外側で呼び出されると、エラーが生成されます。このコマンドはレコードロックのより良いコントロールを提供します。検索されたレコードはトランザクションが終了 (有効またはキャンセル) するまでロックされたままとなります。トランザクションが終了すると、レコードのロックは解除されます。

カレントトランザクション中のすべてのテーブルのレコードがロックされます。

SET QUERY AND LOCK(True) 文が実行されると、(QUERYのような) クエリコマンドは、すでにロックされたレコードを見つけると、特定の動作を選択します:

- クエリが停止され、システム変数OKは0に設定されます,

- カレントセレクションはクリアされます,

- LockedSetシステムセットにはクエリを停止する原因となったロックされたレコードが格納されます。

したがって、カレントセレクションが空だったりOK変数が0だった場合、LockedSetをテストして失敗の原因を検証する必要があります。

このメカニズムを無効にするには、SET QUERY AND LOCK(False) を実行します。

例題

この例題では、CategoryがCに属する顧客は、QUERYDELETE SELECTIONの間で、他のプロセスから変更や削除はできません。:

   START TRANSACTION
   SET QUERY AND LOCK(True)
   QUERY([Customers];[Customers]Categorie=“C”)
      `At this moment, the records found are automatically locked for all other processes
   DELETE SELECTION([Customers])
   SET QUERY AND LOCK(False)
   VALIDATE TRANSACTION 

エラー処理

コマンドがトランザクションのコンテキスト中で呼び出されなかった場合、エラーが生成されます。

参照

QUERY.


4D - Documentation   French   English   German   Spanish   日本語   4D v11 SQLコマンドテーマリスト   4D v11 SQLインデックス   4D v11 SQL定数テーマリスト   戻る   前   次