Page History
...
| Warning |
|---|
警告:
UPDATE コマンドによる「相互更新」チェックの使用を明確に理解する必要があります。 更新が発行されると、WITH UPDATEが発行されると、WITH_KEY も WITH_RRN も指定されていない場合は自動的に「相互更新」チェックが行われるか、WITHも指定されていない場合は自動的に「相互更新」チェックが行われます。 または、WITH_UPDID が指定されている場合は、明示的に「相互更新」チェックが行われます。 または、WITH が指定されている場合は明示的に「相互更新」チェックが行われるか、WITH_UPDID なしで が指定されておらず、 WITH_KEY または WITH_RRN が指定されている場合は実質的に相互更新チェックが行われない場合があります。 が指定されている場合は実質的に相互更新チェックが行われません。 I/O が、IBM i のすべてのフィールド名が含まれていない論理ビューを使用している場合、IBM i で IBM の「その他」ファイルを使用して、IBM i の「その他」ファイルを使用して自動「相互更新」チェックを試行すると、誤った「相互更新」エラーが発生することに注意してください。 上で自動「相互更新」チェックを試行すると、誤った「相互更新」エラーが発生することに注意してください。
次のコマンド フローを考えてみましょう。
UPDATE コマンドには WITH_KEY または WITH_RRN パラメータがないため、(FETCH コマンドによって) 読み取られた最後の行を削除する必要があることを示します。 この状況では、「相互更新ウィンドウ」は、行が FETCH された時点から UPDATE された時点までの間隔にあります。 |
| Note |
|---|
注意: これには時間がかかる場合があります。 |
これは、自動「相互更新」チェック機能の正しく有効な使用法です。 FETCH と UPDATE の間に別のジョブ/ユーザーによって行が変更された場合、UPDATE によって「相互更新エラー」が生成されます (これは、他の種類の検証エラーと同様に処理する必要があります)。
...
FETCH FIELDS(#DATDUE) FROM_FILE(ORDHDR) WITH_KEY(#ORDNUM)
CHANGE FIELD(#DATDUE) TO(*DATE)
UPDATE FIELDS(#DATDUE) IN_FILE(ORDHDR)
そして:および:
CHANGE FIELD(#QUANTITY) TO100)
UPDATE FIELDS(#QUANTITY) IN_FILE(ORDLIN) WITH_KEY(#ORDNUM)
...
最後の 2 つの例では、注文のすべての注文明細行の #QUANTITY フィールド名が 100 に変更されることに注意してください。これは、複数行更新または「一度に設定」更新の例です。
| Note |
|---|
注意: UPDATE WITH_KEY は、同じテーブルまたはビューの選択ループ内、または選択ループ内から呼び出されるサブルーチン内で使用してはなりません。は、同じテーブルまたはビューのSELECTループ内、またはSELECTループ内から呼び出されるサブルーチン内で使用してはなりません。 |