テーブルの行を更新します。

構文

UPDATE [ optimizer_hint ] table[@dblink ]
    SET column = { expression | DEFAULT } [, ...]
  [ WHERE condition ]
  [ RETURNING return_expression [, ...]
      { INTO { record | variable [, ...] }
      | BULK COLLECT INTO collection [, ...] } ]

説明

UPDATE コマンドは、条件を満たすすべての行の指定された列の値を変更します。 SET 句で変更する列を指定するだけです。 指定されていない列は、以前の値を保持します。

RETURNING INTO { record | variable [, ...] } 句は SPL プログラム内でのみ指定できます。 さらに、UPDATE コマンドの結果セットは複数の行を返すことはできません。 そうでない場合、例外が発生します。 結果セットが空の場合、ターゲットレコードまたは変数の内容は null に設定されます。

RETURNING BULK COLLECT INTO collection [, ...] 句は、UPDATE コマンドが SPL プログラム内で使用されている場合にのみ指定できます。 複数の collectionBULK COLLECT INTO 句のターゲットとして指定されている場合、それぞれの collection にスカラーフィールドを含める必要があります。 つまり、collection をレコードにすることはできません。 UPDATE コマンドの結果セットには、0、1、または複数の行を含めることができます。結果セットの各行に対して評価される return_expression は、最初の要素から始まる collection の要素です。 collection の既存のすべての行は削除されます。 結果セットが空の場合、collection も空です。

テーブルを更新するには、テーブルの UPDATE 権限と、expression または condition で値が読み込まれるすべてのテーブルに対する SELECT 権限が必要です。

パラメーター

パラメーター 説明
optimizer_hint オプティマイザへのコメント埋め込みヒントです。 このパラメーターは、実行プランを選択するために使用されます。
table 更新するテーブルの名前。 名前はスキーマで修飾できます。
dblink データベースリンクの名前。 このパラメーターは、リモートデータベースを識別するために使用されます。 データベースリンクの詳細については、CREATE DATABASE LINK コマンドをご参照ください。
column テーブルの列の名前。
expression 列に割り当てる式。 式では、この列とテーブル内の他の列の古い値を使用できます。
DEFAULT 列のデフォルト値。 特定のデフォルト式が割り当てられていない場合、デフォルト値は null です。
condition BOOLEAN 型の値を返す式。 この式が true を返す行のみが更新されます。
return_expression テーブルの 1 つ以上の列を含む式。 return_expression のテーブルから列名を指定した場合、return_expression が評価された場合に列に代入される値は次のように決定されます。
  • return_expression で指定された列に UPDATE コマンドで値が割り当てられている場合、割り当てられた値が return_expression の評価に使用されます。
  • return_expression で指定された列に UPDATE コマンドで値が割り当てられていない場合、影響を受ける行の列の現在の値が return_expression の評価に使用されます。
record 評価される return_expression が割り当てられるフィールドを含むレコード。 最初の return_expressionrecord の最初のフィールドに割り当てられます。 2 番目の return_expressionrecord の 2 番目のフィールドに割り当てられます。 record のフィールド数と式の数は同じでなければなりません。 フィールドは、割り当てられた式とタイプ互換である必要があります。
variable 評価される return_expression が割り当てられる変数。 return_expressionvariable が複数指定されている場合、最初の return_expression は最初の variable に割り当てられ、2 番目の return_expression は 2 番目の variable に割り当てられます。 INTO キーワードに続いて指定される変数の数は、RETURNING キーワードに続く式の数と同じである必要があります。 変数は、割り当てられた式と型互換でなければなりません。
collection 評価される return_expression から要素が作成されるコレクション。 1 つ以上のコレクションが存在できます。 単一のコレクションは、単一のフィールドのコレクションまたはレコードタイプのコレクションです。 複数のコレクションが存在する場合、各コレクションは単一のフィールドで構成される必要があります。 返される式の数とシーケンスは、指定されたすべてのコレクションのフィールドの数とシーケンスと同じである必要があります。 対応する各 return_expression および collection フィールドは型互換でなければなりません。

次のコマンドを実行して、dept テーブルの department 20 の場所を AUSTIN に変更します。

UPDATE dept SET loc = 'AUSTIN' WHERE deptno = 20;

emp テーブルの job = SALESMAN の従業員に対して次のコマンドを実行して、給与を 10% 更新し、歩合を 500 増やします。

UPDATE emp SET sal = sal * 1.1, comm = comm + 500 WHERE job = 'SALESMAN';