テーブルの行を更新します。
構文
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 プログラム内で使用されている場合にのみ指定できます。 複数の collection
が BULK 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 が評価された場合に列に代入される値は次のように決定されます。
|
record | 評価される return_expression が割り当てられるフィールドを含むレコード。 最初の return_expression は record の最初のフィールドに割り当てられます。 2 番目の return_expression は record の 2 番目のフィールドに割り当てられます。 record のフィールド数と式の数は同じでなければなりません。 フィールドは、割り当てられた式とタイプ互換である必要があります。
|
variable | 評価される return_expression が割り当てられる変数。 return_expression と variable が複数指定されている場合、最初の 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';