|
Delete オペレーション(B_DELETE)では、ファイルから既存のレコードを削除します。削除したレコードが占有していたスペースは、新しいレコードを挿入するために再利用されます。
Delete オペレーションを Extended Get または Extended Step オペレーションの直後に実行した場合、これは有効なオペレーションになりません。
Get オペレーションの直後に Delete オペレーションを実行する場合は、Get オペレーションから返されるキー番号を変更しないでください。変更してしまうと、レコードはトランザクショナル インターフェイスで正常に削除されますが、レコード削除後に実行する最初の Get オペレーションでステータス コード 7 が返されます。
トランザクショナル インターフェイスでは、Get Key オペレーション(+50)の後に Delete オペレーションを実行することはできません。トランザクショナル インターフェイスで Delete オペレーションを実行する前に、変更しようとしているデータ ページの現在の使用回数と、レコードを読み取った時点のデータ ページの使用回数が比較されます。使用回数を取得するには、トランザクショナル インターフェイスがデータ ページを読み取る必要があります。
Get Key オペレーションではデータ ページを読み取らないので、Delete オペレーションで比較するための使用回数が利用可能になりません。トランザクショナル インターフェイスでは、比較なしにパッシブ並行制御の矛盾チェックを実行できないため、Delete オペレーションは正常に実行されません。Delete オペレーションが正常に実行されないと、トランザクショナル インターフェイスからステータス コード 8 が返されます。
Delete オペレーションが正常に終了した場合は、トランザクショナル インターフェイスによってファイルからレコードが削除され、削除したレコードにロックが設定されていた場合はそのロックが解除され、さらに削除の結果を反映して、すべてのキー インデックスを調整されます。
Delete オペレーションが正常に実行されなかった場合は、トランザクショナル インターフェイスから次のステータス コードのいずれかが返されます。
8
|
現在のポジションが不正です。
|
80
|
トランザクショナル インターフェイスでレコード レベルの矛盾が発生しました。
|
84
|
レコードまたはページがロックされています。
|
85
|
ファイルはロックされています。
|
Delete オペレーションを実行してもファイル サイズは小さくなりません。レコードの削除によって生じる空き領域は、今後レコードを追加するときに再利用されます。ディスク容量を回復するには、ファイルを再作成して、そのファイルにすべてのレコードを挿入するしかありません。
Delete オペレーションを実行すると、すべての物理位置情報と現在のレコードの論理位置は消去されますが、次のレコードまたは前のレコードの論理位置は変わりません。
|