指定されたテーブルの指定された列に新しい値を設定します。
Synopsis
UPDATE [restriction] table value-assignment-statement 
     [WHERE condition-expression]

UPDATE [restriction] table value-assignment-statement 
     [WHERE CURRENT OF cursor [AND condition-expression]]

where value-assignment-statement can be:
   SET columns = scalar-expressions
   SET columns = [(columns)] VALUES (scalar-expressions)
   SET columns = [(columns)] VALUES host-variable
引数
restriction オプション — %NOLOCK、%NOCHECK、%NOINDEX、%NOTRIGGER のキーワードのうちの 1 つ、またはこれらキーワードのコンマで区切られたリスト。
table データを更新するテーブルの名前。テーブルで更新を実行するビューを指定できます。
WHERE condition-expression オプション — 更新される行の数を制限するのに使用される条件を指定します。WHERE 節 (または WHERE CURRENT OF 節) が指定されていない場合、UPDATE はテーブル内のすべての行を更新します。詳細は、"WHERE" を参照してください。
WHERE CURRENT OF cursor オプションUPDATE が現在の cursor 位置で実行されることを指定します。これはテーブルを指すカーソルです。カーソルが指す行とその行に続くすべての行を更新するか、または (AND 節が指定されている場合は) AND 条件式と一致するすべての行を更新します。詳細は、"WHERE CURRENT OF" を参照してください。
columns コンマで区別されたリストとして指定する 1 つ以上の列。
scalar-expressions コンマで区別された、スカラ式で表される 1 つ以上の値。
host-variable ホスト変数。
概要
UPDATE 文は、テーブルの列の既存値を変更します。テーブルの行の更新は、直接行う方法と、ビューを使用した方法があります。ビューを使用して更新する場合は、CREATE VIEW で説明されているように、必要条件や制限事項に従います。
値割り当ての文内では、column-commalistscalar-expression-commalist と等しく設定する際に、値を設定した scalar-expression が各列に必要です。
UPDATE 文は、既存のベース・テーブルの行 (単独もしくは複数) に、新規の列の値を提供します。更新には、2 つの構文が利用できます。WHERE 節または WHERE CURRENT OF 節が更新の範囲を制限しない限り、すべての更新はテーブル全体を更新するとみなされます。例えば以下のようになります。
UPDATE Employees
     SET StatusDate = '05/12/98', status = 'Purged'
     WHERE status = 'Completed'
column-list 引数はオプションです。使用する場合、更新したい列をコンマで区切られたリストにします。省略した場合は、すべての列を更新するとみなされます。
SET 文 (単独または複数のスカラ式とともに使用される場合) には、テーブルを更新するために、コンマで区切られた値のリストが必要です。値は column-list 内で列名と位置的に対応しなければなりません。column-list が指定されていない場合、update-list は列番号順で指定された各ベース・テーブル列に対する値を持つ必要があります。
UPDATE オペレーションは全か無かのイベントです。指定された行および列をすべて更新するか、まったくしないかのいずれかです。また、UPDATE 操作により、%ROWCOUNT ローカル変数が更新された行数に設定されます。
Caché は、UPDATE の成功または失敗を示す、ステータス変数 SQLCODE を返します。テーブルの行を更新するには、以下の条件を満たしている必要があります。
制限引数
restriction 引数を指定すると、以下のように処理を制限します。
参照整合性
%NOCHECK を指定しない場合、Caché ではシステム構成設定を使用して外部キーの参照整合性チェックを実行するかどうかが決まります。システムの既定値は以下のように設定できます。
UPDATE 処理中は、更新するフィールド値を持つ外部キーの参照があるたびに、参照するテーブルの古い (更新前の) 参照行と新しい (更新後の) 参照行の両方で共有ロックを取得します。これらの行は、トランザクションの終了までロックされます。古い行をロックすることにより、参照される行は、UPDATE のロールバックがあってもそれより前に変更されることがなくなります。新しい行をロックすることにより、参照されている行は、UPDATE の参照整合性チェックからトランザクションの終了までの間、変更されないことが保証されます。
トランザクションでのロック
%NOLOCK を指定しない場合、Caché は、INSERTUPDATE、および DELETE 操作時に標準のロックを実行します。一意フィールドの値は、現行のトランザクションの間、ロックされます。
既定のロックしきい値は、テーブルごとに 1000 ロックです。これは、トランザクション時にテーブルから 1000 を超える一意フィールド値を更新する場合、ロックしきい値に到達し、Caché がロック・レベルを自動的に、一意フィールド値ロックからテーブル・ロックへと上げることを意味します。これによってトランザクション時に、ロック・テーブルをオーバーフローすることなく、大規模な更新を実行できます。このロックしきい値は設定可能です。トランザクションでのロックの詳細は、このドキュメントの "SQL の概念" の "トランザクション" を参照してください。
関連項目