指定されたテーブルの指定された列に新しい値を設定します。
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 オペレーションは全か無かのイベントです。指定された列をすべて更新するか、まったくしないかのいずれかです。
Caché は、UPDATE の成功か失敗かを示した、ステータス変数 SQLCODE を返します。また、UPDATE オペレーションは %ROWCOUNT ローカル変数を、更新された行の数に設定します。
制限引数
restriction 引数を指定すると、以下のように処理を制限します。
トランザクションでのロック
%NOLOCK を指定しない場合、Caché は、INSERTUPDATE、および DELETE 操作時に標準のロックを実行します。一意フィールドの値は、現行のトランザクションの間、ロックされます。ロックしきい値は、テーブルごとに 1000 ロックです。そのため、トランザクション時にテーブルから 1000 を超える一意フィールド値を更新する場合は、ロックしきい値に到達し、Caché はロック・レベルを自動的に、一意フィールド値ロックからテーブル・ロックへと上げます。これによってトランザクション時に、ロック・テーブルをオーバーフローすることなく、大規模な更新を実行できます。ロックの詳細は、このドキュメントの "SQL の概念" の "トランザクション" を参照してください。
関連項目