]説明UPDATEは、条件を満たす全ての行の指定した列の値を変更します。SET句には、変更する列のみを指定する必要があります。SET句にて明示的に指定されなかった列の値は変更されません。データベース内の他のテーブルの情報を使用してテーブルを変更するには、2つの方法があります。1つは副問い合わせを使用する方法、もう1つはFROM句で追加のテーブルを指定する方法です。どちらの方法が適切であるかは状況次第です。RETURNING句を指定すると、UPDATEは実際に更新された各行に基づいて計算された値を返すようになります。そのテーブルの列およびFROMで指定された他のテーブルの列を使用した式を計算することができます。テーブル列の新しい(更新された後の)値が使用されます。RETURNINGリストの構文はSELECTの出力リストと同一です。更新を行うためには、そのテーブルまたは少なくとも更新対象の列についてUPDATE権限を持たなければなりません。expressionsやconditionで値を読み込む列に対するSELECT権限も必要になります。パラメータwith_queryWITH句によりUPDATE問い合わせ内で名前で参照可能な1つ以上の副問い合わせを指定することができます。項7.8とSELECTを参照してください。table_name更新対象のテーブルの名前です(スキーマ修飾名でも可)。テーブルの前にONLYを指定すると、指名されたテーブルでのみマッチする行が更新されます。ONLYを指定しないと、指名したテーブルから継承されたすべてのテーブルでもマッチする行が同時に更新されます。オプションで、テーブル名の後に*を指定して、明示的に子テーブルが含まれることを示すこともできます。alias対象テーブルの代替名です。別名が指定されると、テーブルの実際の名前は完全に隠蔽されます。fでは、UPDATE文の残りの部分ではfooではなくfとしてこのテーブルを参照しなければなりません。column_nametable_nameで指名されたテーブル内の列名です。必要に応じて、列名を副フィールド名や配列の指示子で修飾することも可能です。対象列の指定にはテーブル名を含めないでください。expression列に代入する式です。この式では、テーブル内の対象列やその他の列の変更前の値を使用することができます。(デフォルト式が割り当てられていない場合はNULLになります)。from_listWHERE条件や更新用の式において、他のテーブルの列を指定するために使用するテーブル式の集合です。これはSELECT文のFROM句で指定するテーブルのリストに似ています。自己結合を行う場合を除き、from_listに更新対象のテーブルを含めてはいけません。(自己結合を行う場合は、from_list内で更新対象のテーブルとその別名を指定しておく必要があります)。conditionboolean型の値を返す式です。この式がtrueを返す行のみが更新されます。OF条件で使用されるカーソルの名前です。更新対象の行は、そのカーソルからもっとも最近に取り出された行です。カーソルはUPDATEの対象テーブルに対するグループ化のない問い合わせでなければなりません。OFを論理条件といっしょに指定することはできません。OF付きのカーソル使用に関する情報についてはDECLAREを参照してください。output_expression各行を更新した後に計算され、UPDATEによって返される式です。この式には、table_nameまたはFROMで指定したテーブル(複数可)の任意の列名を使用することができます。すべての列を返す場合は*と記載してください。output_name返される列で使用される名前です。正常に処理が終わると、UPDATEコマンドは以下の形式のコマンドタグを返します。countcountは,、合致したが変更されなかった行を含む、更新された行数を意味します。UPDATEトリガにより更新が抑制された場合に、conditionに合致した行数より少なくなる可能性があることに注意してください。(これはエラーとはみなされません)。UPDATEコマンドがRETURNING句を持つ場合、その結果は、RETURNINGリストで定義した列と値を持ち、そのコマンドで更新された行全体に対して計算を行うSELECT文の結果と似たものになるでしょう。注釈FROM句が存在する場合、基本的に、対象テーブルとfrom_listで指定されたテーブルが結合され、この結合の出力行が対象テーブルの更新操作の結果となります。FROM句を使用する場合、更新対象テーブルの1行に対して、結合結果が複数行にならないように注意してください。言い換えると、対象テーブルの個々の行は、他テーブルの複数の行と結合すべきではありません。結合結果が複数行になった場合、対象行の更新には結合結果のいずれか1行のみが使用されますが、どの行が使用されるかは簡単には予測できません。このような不定性の問題があるため、他テーブルの参照は副問い合わせ内のみに留めておいた方がより安全です(ただし、結合よりも可読性や実行速度は低下します)。例filmsテーブルのkind列にあるDramaという単語をDramaticに変更します。'Drama';weatherテーブルの特定の行に対し、気温に関する項目を調整し、降水量をデフォルト値に戻します。'2003-07-03';同じ操作を行い、更新された項目を返します。prcp;もう一つの方法である列リスト構文を使用して同じ更新を行います。Corporationを顧客とするセールスマンのセールスカウントを1増加させます。accounts.sales_person;WHERE句で副問い合わせを使用して、同じ操作を行います。Corporation');新しい商品とその在庫数を挿入します。その商品が存在している場合は、代わりに既存商品の在庫数を更新します。トランザクション全体が失敗することがないようにこの操作を行うには、セーブポイントを使用してください。何かしらの他の操作を行います。上記のコマンドが一意キー違反により失敗したとします。この場合、次のコマンドを実行します。他の操作を続けた後、最後に次を実行します。COMMIT;filmsテーブルにおいて、c_filmsカーソルが現在位置している行のkind列を変更します。c_films;互換性このコマンドは標準SQLに準拠しています。FROM句およびRETURNING句はPostgreSQLの拡張です。UPDATEでWITHが使用可能であることも同様に拡張です。標準に従うと、列リスト構文は、副選択のような単一の行値式から代入される列のリストを許可しなければなりません。accounts.sales_id);これは現時点ではサポートされていません。ソースは独立した式のリストでなければなりません。他のデータベースシステムには、FROMオプション内で、対象テーブルが再度指定されることを前提として動作するものもあります。これはPostgreSQLにおけるFROMの解釈方法とは異なります。この拡張機能を使用するアプリケーションを移植する時は注意してください。