ヘッダーをスキップ

Oracle TimesTen In-Memory Database APIおよびSQLリファレンス・ガイド リリース6.0 B25770-01 |
| 目次 | 索引

前へ | 次へ |

## UPDATE

UPDATE文は、表のすべての行または検索条件を満たす行の1つ以上の列値を更新します。

アクセス制御

TimesTenインスタンスでアクセス制御が有効な場合、この文にはWRITE権限またはデータ・ストア・オブジェクトの所有権が必要です。

SQL構文

UPDATE文の構文は、次のとおりです。

UPDATE [FIRST NumRows]
{[Owner.]TableName [CorrelationName]}
SET {ColumnName =
{Expression | NULL | DEFAULT}} [,...]
[ WHERE SearchCondition ]
パラメータ

UPDATE文には、次のパラメータがあります。

FIRST NumRows | 更新する行の数を指定します。NumRowsには正のINTEGERを指定する必要があります。FIRST NumRowsは、副問合せを使用した文ではサポートされていません。
[Owner.]TableName [CorrelationName] | [Owner.]TableNameは、更新する表を識別します。 CorrelationNameは、直前で指定した表へのシノニムを指定します。その表の列にアクセスする際、文の中で実際の表名ではなく相関名を使用します。相関名は、基本名の構文ルールを満たしている必要があります（「基本名」を参照）。 単一のUPDATE文のすべての相関名は、一意である必要があります。
SET ColumnName | 更新する列を指定します。単一のUPDATE文で同じ表の複数の列を更新できます。
Expression | 集計関数を含まない式を指定します。式は、更新操作に指定した行ごとに評価されます。式のデータ型は、更新する列のデータ型と互換性がある必要があります。値を更新する場合、式には列、または順序CURRVALやNEXTVAL参照を指定できます。
NULL | WHERE句を満たす各行の指定した列にNULL値を挿入します。NULL値可能な列である必要があります。
DEFAULT | デフォルト値を使用して列を更新する必要があることを指定します。
WHERE SearchCondition | 検索条件には副問合せを含めることができます。検索条件がTRUEとなる行はすべて、SET句の指定に従って更新されます。検索条件に一致しない行に影響はありません。検索条件に一致する行がない場合、表は変更されません。

説明

- WHERE句を省略した場合、表のすべての行はSET句の指定に従って更新されます。
- UPDATE操作中に文字またはバイナリ文字列が切り捨てられた場合、TimesTen Data Managerによって警告が生成されます。
- TableNameには、UPDATE文のターゲット表を指定します。
- 一意制約が定義されている表を、重複する行を含むように更新することはできません。
- ターゲット表に外部キー制約が指定されている場合は、制約を実行するために、ディスク・ロギングまたはディスクレス・ロギングを有効にする必要があります。
- 外部キー制約に違反するUPDATE操作はエラーになります。外部キー制約の詳細は、「CREATE TABLE」を参照してください。

##### 例13.104

この例は、コストが$500を超える部品の価格を25%引き上げます。

    UPDATE Purchasing.Parts
    SET SalesPrice = SalesPrice * 1.25
    WHERE SalesPrice > 500.00;

##### 例13.105

この例は、順序seqのNEXTVAL値を使用して列を更新します。

    UPDATE student SET studentno = seq.NEXTVAL WHERE name = `Sally';

##### 例13.106

次の問合せは、少なくとも1つの未出荷注文を持つすべての顧客のステータスを更新します。

    UPDATE customers SET customers.status = 'un-shipped'
    WHERE customers.id = ANY
    (SELECT orders.custid FROM orders
    WHERE orders.status = 'un-shipped');

##### 例13.107

idが主キーでない場合、次の問合せはすべての重複する注文を更新します。

    UPDATE orders A
    WHERE EXISTS (SELECT 1 FROM orders B
    WHERE A.id = B.id and A.rowid < B.rowid);