このドキュメントでは、次のトピックについて説明します。
構文図で使用されている記号については、「構文記号」を参照してください。
関連機能グループ:データベースへのアクセスと更新
SQL UPDATE
ステートメントは、カーソルを使用しないでテーブル内の行に対して UPDATE
(更新)処理を実行したり("検索済"UPDATE
)、カーソルが位置づけられた行の列に対して更新処理を実行したり("位置決め"UPDATE
)するために使用します。
2 つの異なる構文構造が可能です。
"検索済"UPDATE
ステートメントは、どの SELECT
ステートメントにも関連しない独立したステートメントです。単一のステートメントで、テーブルのゼロ、1 つ、複数、またはすべての行を更新できます。更新される行はテーブルに適用する search-condition
によって決定されます。オプションで、ビュー名およびテーブル名に correlation-name
を割り当てることができます。
注意:
"検索済"UPDATE
で実際に更新された行の数は、システム変数 *ROWCOUNT
で確認できます。
UPDATE |
view-name [correlation-name] SET
* |
||||||||||||
table-name [correlation-name] SET assignment-list |
|||||||||||||
[WHERE search-condition]
|
WITH |
RR RS CS |
[QUERYNO integer]
|
構文図で使用されている記号については、「構文記号」を参照してください。
構文要素の説明 - 構文 1:
構文要素 | 説明 | |
---|---|---|
view-name |
ビュー名:
|
|
correlation-name |
相関名:
項目 詳細については、「基本構文項目」の |
|
SET |
SET 節:
ビューに更新を指定している場合は、ビューのすべての列が更新される必要があるので、 テーブルに更新を指定している場合は、 |
|
assignment-list |
割り当てリスト: 下記の「割り当てリスト」を参照してください。
|
|
WHERE
search-condition |
WHERE 節:
この節では、更新する行の選択条件を指定します。
|
|
WITH |
WITH - 分離レベル節:
この節では、更新する行を検索するときに使用する分離レベルを明示的に指定できます。 詳細については、 DB2 データベースにのみ有効です。他のデータベースに使用すると、ランタイムエラーが発生します。 |
|
CS |
カーソルの安定 | |
RR |
繰り返し可能な読み込み | |
RS |
読み込みの安定 | |
QUERYNO
integer |
QUERYNO 節:
この節は、現在はサポートされていないため無視されます。 |
column-name = | scalar-expression | , | |||||
NULL |
assignment-list
では、1 つ以上の列に値を割り当てることができます。値は scalar-expression
または NULL
のいずれかです。詳細については、「スカラ式」を参照してください。
値 NULL
が割り当てられている場合は、指定されたフィールドに値(値 "0" または "空白"でも)は含まれないことを意味します。
構文要素の説明:
構文要素 | 説明 |
---|---|
column-name |
列名:
|
NULL |
NULL オプション:
列の新しい値として空値を指定します。 値 |
"位置決め"UPDATE
ステートメントは、常にデータベースループ内のカーソルを参照します。したがって、位置決め UPDATE
ステートメントで参照されるテーブルまたはビューは、対応する SELECT
ステートメントで参照されるテーブルまたはビューと同一のものである必要があります。そうでない場合はエラーメッセージが返されます。位置決め UPDATE
を非カーソル選択で使用することはできません。
一般セットの構文:
UPDATE |
view-name SET * |
[WHERE CURRENT OF
CURSOR (r)]
|
||
view-name SET assignment-list |
拡張セットの構文:
UPDATE |
view-name SET
* |
[WHERE CURRENT OF
CURSOR (r)
|
FOR
ROW |
[:]host-variable | OF
ROWSET |
||||||
view-name SET assignment-list |
integer |
構文要素の説明 - 構文 2:
構文要素 | 説明 |
---|---|
view-name |
Natural ビュー:
|
SET *
|
SET 節:
Natural ビューに更新を指定している場合は、ビューのすべての列が更新される必要があるので、 テーブルに更新を指定している場合は、 |
WHERE CURRENT OF CURSOR
(r) |
ステートメント参照:
|
FOR ROW … OF ROWSET |
FOR ROW … OF ROWSET 節:
この節は SQL 拡張セットに含まれます。 位置決め SQL この節を指定しない場合、現在の行セットのすべての行が
|
DEFINE DATA LOCAL 1 PERS VIEW OF SQL-PERSONNEL 2 NAME 2 AGE ... END-DEFINE ... ASSIGN AGE = 45 ASSIGN NAME = 'SCHMIDT' UPDATE PERS SET * WHERE NAME = 'SCHMIDT' ...
DEFINE DATA LOCAL 1 PERS VIEW OF SQL-PERSONNEL 2 NAME 2 AGE ... END-DEFINE ... UPDATE SQL-PERSONNEL SET AGE = AGE + 1 WHERE NAME = 'SCHMIDT' ...
DEFINE DATA LOCAL 1 PERS VIEW OF SQL-PERSONNEL 2 NAME 2 AGE ... END-DEFINE ... SELECT * INTO PERS FROM SQL_PERSONNEL WHERE NAME = 'SCHMIDT' COMPUTE AGE = AGE + 1 UPDATE PERS SET * WHERE CURRENT OF CURSOR END-SELECT ...
DEFINE DATA LOCAL 1 PERS VIEW OF SQL-PERSONNEL 2 NAME 2 AGE ... END-DEFINE ... SELECT * INTO PERS FROM SQL-PERSONNEL WHERE NAME = 'SCHMIDT' UPDATE SQL-PERSONNEL SET AGE = AGE + 1 WHERE CURRENT OF CURSOR END-SELECT ...