update-clause

オプションの FOR UPDATE 文節は、後の位置付け UPDATE ステートメントの割り当て文節にターゲットとして現れる可能性がある列を識別します。

update-clause

構文図を読むビジュアルシンタックスダイアグラムをスキップするFOR UPDATE OF,カラム名

各列名は修飾されていないものでなければならず、fullselectの最初の節で指定されたテーブルまたはビューの列を特定しなければなりません。 FROM フルセレクトの最初の節で指定された 全選択の結果表が読み取り専用の場合は、この文節を指定してはなりません。

変更の開始もし FOR UPDATE 列名リストで指定された場合、拡張インジケータが有効になっていない場合、 列名は更新可能な列でなければなりません。変更の終わり

もし FOR UPDATE 列名リストを指定せずに句を指定した場合は、暗黙的な列名リストは、フルセレクトの最初の句で指定されたテーブルまたはビューのすべての更新可能な列で構成されます。 FROM フルセレクトの最初の節で識別された

動的に準備された SELECT ステートメントが FOR UPDATE 文節を含まない場合は、位置付け UPDATE ステートメントで、SELECT ステートメントに関連付けられたカーソルを参照できません。

変更の開始静的に準備された SELECT文に FOR UPDATE句が含まれておらず、かつ、その結果テーブルが読み取り専用でない場合、暗黙のUPDATE句が作成されます。 暗黙的な列名のリストは、次のように決定されます。
  • 拡張標識が使用可能な場合、全選択の最初の FROM 節で識別される表またはビューのすべての列が含まれます。
  • それ以外の場合は、全選択の最初の FROM 節で識別される表またはビューのすべての更新可能な列が含まれます。
変更の終わり

位置指定UPDATE文で参照されるカーソルの宣言には、 UPDATE プログラムが準備される際にSTDSQL(YES)またはNOFOR SQL処理オプションが指定されている場合、節を含める必要はありません。 詳細は、 列の配置更新を参照してください。

FOR UPDATE カーソルを参照するFETCH操作では、以下の場合はSロックではなくUロックまたはXロックを取得します

  • ステートメントの分離レベルがカーソル固定である。
  • ステートメントの分離レベルは繰り返し読み取りまたは読み取り安定性であり、RRULOCKサブシステムパラメータはYESに設定されています。
  • ステートメントの分離レベルが反復可能読み取りまたは読み取り固定で、USE AND KEEP EXCLUSIVE LOCKS または USE AND KEEP UPDATE LOCKS が SQL ステートメントに指定されている場合は、それぞれ X ロックまたは U ロックがフェッチ時に取得されます。

宣言済み一時表に対するロックは獲得されません。 UロックとSロックについては、「ロックモードとロックの互換性 」を参照してください。

変更の開始更新される列を参照する:変更の終わり
変更の開始FETCH文を使用して、後で更新される列を取得する場合は、列を選択する際にFOR UPDATE OFを指定します。 次に、その後の UPDATE または DELETE 文で WHERE CURRENT OF を指定します。 これらの条項により、 Db2 が更新中の列のインデックス経由のアクセスを選択することができなくなり、そうでないと Db2 が同じ行を複数回読み込む可能性がある。

詳細は、「以前に取得したデータの更新 」を参照してください。

変更の終わり