Btrieve API Guide (v11)

Unlock(27)

Unlock オペレーション(B_UNLOCK)では、明示的にロックされている 1 つまたは複数のレコード(つまり、ロック バイアス +100、+200、+300 または +400 を使ってロックされたレコード)のロックを解除します。Unlock オペレーションは指定したポジション ブロックで保持されているロックを解除するので、同一ファイルを複数回開いた場合は、ポジション ブロックごとに Unlock オペレーションを発行しなければ、レコードのロックは完全に解除されません。同様に、ファイル内のレコードに対しロックを保持している各クライアントが Unlock オペレーションを発行しなければ、レコードのロックは完全に解除されません。

パラメーター

 
オペレーション コード
ポジション ブロック
データ バッファー
データ バッファー長
キー バッファー
キー番号
送り値

 

戻り値
 
 
 
 
 
 

前提条件

少なくとも 1 つのレコードがロックされていることが必要です。

手順

単一レコード ロックを解除するには、次の手順に従います。

  1. オペレーション コードに 27 を設定します。
  2. ロックされたレコードを含むファイルのポジション ブロックを渡します。
  3. キー番号に正の値またはゼロを設定します。

複数レコード ロックが設定されている 1 つのレコードのロックを解除するには、まずそのレコードを対象に Get Position オペレーション(22)を発行し、ロックを解除するレコードの 4 バイト物理位置を取得します。その後、次の手順に従って Unlock オペレーションを発行します。

  1. オペレーション コードに 27 を設定します。
  2. ロックされたレコードを含むファイルのポジション ブロックを渡します。
  3. トランザクショナル インターフェイスから返される 4 バイトの物理位置をデータ バッファーに格納します。
  4. データ バッファー長に 4 を設定します。
  5. キー番号パラメーターに -1 を設定します。

ファイル上の複数レコード ロックをすべて解除するには、次の手順に従います。

  1. オペレーション コードに 27 を設定します。
  2. 複数のロックを含むファイルのポジション ブロックを渡します。
  3. キー番号パラメーターに -2 を設定します。

結果

Unlock オペレーションが正常に終了した場合、トランザクショナル インターフェイスではオペレーションで指定したロックがすべて解除されます。

Unlock オペレーションが正常に実行されなかった場合は、トランザクショナル インターフェイスから 0 以外のステータス コード、たいていはステータス コード 81 が返されます。

ポジショニング

Unlock オペレーションは、ポジショニングにまったく影響しません。


Stop(25)

Update(3)