ヘッダーをスキップ

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

前へ | 次へ |

## DELETE

DELETE文は、表から行を削除します。

アクセス制御

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

SQL構文
DELETE [FIRST NumRows] FROM [Owner.]TableName[CorrelationName]
[WHERE SearchCondition]
パラメータ

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

FIRST NumRows | 削除する行の数を指定します。NumRowsには正のINTEGERを指定する必要があります。FIRST NumRowsは、副問合せを使用した文ではサポートされていません。
[Owner.]TableName [CorrelationName] | 検索条件を満たす行を削除する表を指定します。 [Owner.]TableName [CorrelationName] ここで、 [Owner.]TableNameには、削除する表を指定します。 CorrelationNameは、直前で指定した表へのシノニムを指定します。その表の列にアクセスする際、DELETE文の中で実際の表名ではなく相関名を使用します。相関名は、基本名の構文ルールを満たしている必要があります（「基本名」を参照）。
SearchCondition | 削除する行を指定します。検索条件に一致する行がない場合、表は変更されません。WHERE句を省略した場合は、すべての行が削除されます。検索条件には副問合せを含めることができます。

説明

- 表の行をすべて削除した場合、表は空になりますが、DROP TABLE文を実行しないかぎり、表自体は削除されません。
- 外部キーがターゲット表を参照する場合は、制約を実行するために、ディスク・ロギングまたはディスクレス・ロギングを有効にする必要があります。
- 外部キー制約に違反するDELETE処理はエラーになります。外部キー制約の詳細は、「CREATE TABLE」を参照してください。

##### 例13.57

発注件数が50未満の行をすべて削除します。

    DELETE FROM Purchasing.OrderItems
    WHERE Quantity < 50;

##### 例13.58

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

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

##### 例13.59

次の順序で文を指定すると、外部キー違反が発生します。

    CREATE TABLE Master
    (Name CHAR(30), Id CHAR(4) NOT NULL PRIMARY KEY);
    CREATE TABLE Details(MasterId CHAR(4),
    Description VARCHAR(200), FOREIGN KEY (MasterId) REFERENCES
    Master(Id));
    INSERT INTO Master('Elephant', '0001');
    INSERT INTO Details('0001', 'A VERY BIG ANIMAL');
    DELETE FROM Master WHERE Id = '0001';

##### 例13.60

ビジーな表を削除しようとするとエラーが発生します。この例では、t1はビジーな表であり、親表とそれに基づく外部キー制約となっています。

    CREATE TABLE t1 (a INT NOT NULL, b INT NOT NULL,
     PRIMARY KEY (a));
    CREATE TABLE t2 (c INT NOT NULL,
     FOREIGN KEY (c) REFERENCES t1(a));
    INSERT INTO t1 VALUES (1,1);
    INSERT INTO t2 VALUES (1);
    DELETE FROM t1;

    次のエラーが返されます。

    SQL ERROR (3001):  Foreign key violation [TTFOREIGN_0] a row in
    child table T2 has a parent in the delete range.