テーブルの行を更新します。
構文
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;