4.9 UPDATE行の更新

<この節の構成>
(1) 機能
(2) 形式
(3) 共通規則
(4) 使用例

(1) 機能

指定した探索条件を満たす表内の行の,指定した列の値を更新します。

(2) 形式

UPDATE文::=
 UPDATE 更新対象表
     SET SET句〔,SET句〕…
     〔WHERE 探索条件〕
更新対象表::=表名
SET句::={更新対象列=更新値|ROW=行更新値}
更新対象列::=列名
更新値::=値指定
行更新値::=:埋め込み変数〔:標識変数〕

(a) 更新対象表

更新する表の表名を指定します。

スキーマ名に"MASTER"は指定できません。

(b) 更新対象列

更新対象列::=列名

列名
更新する列の名称を指定します。
(c) 更新値

更新値::=値指定

値指定
値指定については,「2.10 値指定」を参照してください。
(d) ROW

行単位でデータを更新する場合に指定します。ROWは行全体を意味し,これを指定すると,行全体を一つのデータと見なされます。ROWを指定する場合の規則を次に示します。

(3) 共通規則

  1. 更新値は,更新対象列と変換または比較できるデータ型にしてください。
  2. 更新値に埋め込み変数を指定する場合,仮定されるデータ型およびデータ長は更新対象列のデータ型およびデータ長になります。
  3. DECIMAL型のデータでINTEGER型の列を更新する場合,端数(小数)部分は切り捨てられます。
    また,DECIMAL型のデータでDECIMAL型の列を更新する場合,列の位取りより下位のけた部分が切り捨てられます。
  4. 更新対象列の値として,表の定義時に指定した長さ以上の文字データは入力できません。
  5. 数データを更新する場合,範囲外の数値を入力することはできません。
  6. 固定長文字列の列を更新するデータが列の長さより短い場合は,左詰めにされて,余りの部分に半角空白が格納されます。
  7. TIMESTAMP型のデータでTIMESTAMP型の列を更新する場合,列の小数秒のけた数より下位のけた部分が切り捨てられます。更新するデータの小数秒のけた数より列の小数秒のけた数が多い場合,0を補って格納されます。
  8. SET句は,最大3000個指定できます。
  9. 更新の対象となる行がない場合は,SQLCODEに100が設定されます。
  10. 同じ列名を更新対象列に重複して指定できません。またROWを指定する場合は,SET句を二つ以上指定できません。

(4) 使用例

在庫表(ZAIKO)の商品コード列(SCODE)が302Sの商品の在庫量列(ZSURYO)を100に変更します。

UPDATE "ZAIKO"
SET "ZSURYO" = 100
WHERE "SCODE" = '302S'