UPDATE

Name

UPDATE  -- テーブルの行の更新

Synopsis

UPDATE [ ONLY ] table SET col = expression [, ...]
    [ FROM fromlist ]
    [ WHERE condition ]
  

入力

table

既存のテーブルの名前です (スキーマ修飾名でも可)。 ONLY が指定された場合、そのテーブルのみが更新されます。 ONLY が指定されていない場合、そのテーブルおよび (存在する場合は) それを継承するすべてのテーブルが更新されます。 継承テーブルがスキャンされることを表すために、テーブル名に * を付けることができますが、現在のバージョンでは、継承テーブルのスキャンはデフォルトで行われます。 (7.1 より前のリリースでは、ONLY がデフォルトでした。) デフォルト設定は、SQL_INHERITANCE 設定オプションで変更できます。

column

table 内の列名です。

expression

列に代入する、有効な式または値です。

fromlist

WHERE 条件に他のテーブル上の列を指定できるようにする PostgreSQL の非標準的拡張です。

condition

WHERE句 の詳細な説明についてはSELECT 文を参照して下さい。

出力

UPDATE #

成功した時に返されるメッセージです。# は更新された行数を意味します。#が0の場合は更新された行がなかったことを意味します。

説明

UPDATE は、条件を満たす全ての行の指定された列の値を変更します。変更されるべき列のみが文内のcolumnsパラメータにある必要があります。

SELECT と同じ構文を使って配列を参照します。つまり、1つの配列要素も、ある範囲にわたる配列要素も、配列全体も1つの問い合わせで更新することができます。

テーブルを変更するためには書き込み権限が必要です。 あわせて、 WHERE条件内で指定した値を持つテーブルへの読み込み権限も必要になります。

デフォルトで、UPDATEは指定されたテーブルとそのサブテーブルのタプルを更新します。指定されたテーブルのみを更新したい場合はONLY句を使用して下さい。

使用方法

kind 列上の Drama という単語を Dramatic に変更します。

UPDATE films
SET kind = 'Dramatic'
WHERE kind = 'Drama';
SELECT *
FROM films
WHERE kind = 'Dramatic' OR kind = 'Drama';

 code  |     title     | did | date_prod  |   kind   | len
-------+---------------+-----+------------+----------+-------
 BL101 | The Third Man | 101 | 1949-12-23 | Dramatic | 01:44
 P_302 | Becket        | 103 | 1964-02-03 | Dramatic | 02:28
 M_401 | War and Peace | 104 | 1967-02-12 | Dramatic | 05:57
 T_601 | Yojimbo       | 106 | 1961-06-16 | Dramatic | 01:50
 DA101 | Das Boot      | 110 | 1981-11-11 | Dramatic | 02:29

互換性

SQL92

SQL92では位置付け型UPDATE文用の異なる構文を定義しています。

UPDATE table SET column = expression [, ...]
    WHERE CURRENT OF cursor
    

ここで、cursor はオープン済のカーソルの識別子です。