 |
PSQL Programmer's Guide (v11) |
 |
|
複数ポジション ブロック (トランザクショナル インターフェイス)
BTRV 関数を使用するアプリケーションで、同じファイルに 2 つのアクティブなポジション ブロックを持ち、両方のポジション ブロックから同じレコードに対して複数レコード ロックを指定した読み取りを発行した場合、どちらのポジション ブロックも成功ステータスを受け取ります。ただし、キー番号に -1 とデータ バッファーに物理位置を指定するか、キー番号に -2 を指定するかしてレコードのロックを解除する場合は、両方のポジション ブロックがロック解除の呼び出しを発行した場合にのみ、レコードのロックは解除されます。1 つのポジション ブロックだけがロック解除呼び出しを行った場合(どの呼び出しかは問題ではない)、別のユーザーはレコードをロックしようとすると、ステータス コード 84 を受け取ります。両方のポジション ブロックがロック解除を発行した後、第 2 のユーザーはレコードをロックできます。
この動作は単一レコード ロックの場合にも当てはまりますが、この場合のロック解除コマンドは、キー番号の特定も、データ バッファーへの物理位置の指定も必要としません。ただし、別のユーザーがレコードをロックするには、両方のポジション ブロックがロック解除を発行する必要があります。
各カーソル(つまり、各ポジション ブロック)はロックを取得します。MicroKernel では同じクライアントのカーソルが同じレコードをロックできますが、各カーソルがロック解除を発行しなければ、レコードのロックは完全に解除されません。
 複数ポジション ブロックの並行制御 (トランザクショナル インターフェイス) |
 クライアント ID パラメーター (トランザクショナル インターフェイス) |
|