|
Update オペレーション(B_UPDATE)では、既存のレコードの情報を変更します。
メモ
NCC(No-currency-change:カレンシー変更なし)オプションを使用すると、Update オペレーションはキー バッファー パラメーターの値を更新しません。つまり、キー バッファー パラメーターには情報は返されません。
Update オペレーションが正常に終了した場合、トランザクショナル インターフェイスではファイル内に格納されているレコードがデータ バッファー内の新しい値を使って更新され、キー値の変更を反映してインデックスが調整されます。また、指定したキーの値がキー バッファーに返されます。NCC Update オペレーションでは、キー バッファー パラメーターの値は更新されません。
トランザクショナル インターフェイスでは、アプリケーションが更新するレコードに単一レコード ロックを設定している場合は、ロックが解除されます。しかし、複数レコード ロックは Update オペレーションを実行しても解除されません。
Update オペレーションが正常に実行されなかった場合は、トランザクショナル インターフェイスから次のステータス コードのいずれかが返されます。
5
|
レコードのキー フィールドに重複するキー値があります。
|
8
|
現在のポジションが不正です。
|
10
|
キー フィールドは変更できません。
|
22
|
データ バッファー パラメーターが短すぎます。
|
80
|
トランザクショナル インターフェイスでレコード レベルの矛盾が発生しました。
|
Update オペレーションも NCC Update オペレーションも、物理カレンシーには影響しません。
更新されたキーの値によってインデックス内のレコードが再配置される場合は、NCC オプションを使用しない Update オペレーションが論理カレンシーに影響を与えることがあります。たとえば、INTEGER キーの現在の論理レコードがそのキーに対して 1 という値を持つ場合を考えてみましょう。これと同じキーについて、次の論理レコードは 2 という値を持ちます。このとき 1 を 4 に更新すると、次の論理レコードが変わります。この例では、Update オペレーションの実行後、次の論理レコードは 4 よりも大きい値を持つことになります。
NCC Update オペレーションは論理カレンシーに影響しません。つまり、NCC Update オペレーションを実行したアプリケーションでは、ファイル内の論理位置は Update オペレーションを実行する前と変わらないということです。このような状況で、NCC Update オペレーションに続けて、Get Next(6)、Get Next Extended(36)、Get Previous(7)、および Get Previous Extended(37)などのオペレーションを実行すると、NCC Update オペレーション実行以前のアプリケーションの論理カレンシーに基づく値が返されます。
メモ
トランザクショナル インターフェイスでは、NCC Update オペレーションを実行しても、その結果として何の情報もキー バッファーには返されません。したがって、論理カレンシーの維持が必要なアプリケーションでは、NCC Update オペレーション後にキー バッファーの値を変更しないでください。変更すると、次の Get オペレーションの結果は予測できないものになります。
|