テーブルの行を更新します。
構文
UPDATE [ optimizer_hint] テーブル [サブクエリ][@ 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プログラム内で使用されている場合にのみ指定できます。 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 から要素が作成されるコレクション。 単一フィールドのコレクションまたはレコードタイプのコレクションを指定できます。 各コレクションが単一フィールドで構成される複数のコレクションを指定することもできます。 戻り式の数と順序は、指定したすべてのコレクションのフィールドの数と順序と一致する必要があります。 各return_expression は、対応するcollection フィールドと型互換である必要があります。 |
subquery | サブクエリ句。 |
例
deptテーブルで部署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';
SELECT * FROM table1
の結果をオブジェクトとして取得し、オブジェクトのclass列の値を1に設定します。
UPDATE (SELECT * FROM table1) SET class = 1 WHERE id = 1;