ヘッダーをスキップ
Oracle TimesTen In-Memory Database SQLリファレンス・ガイド
リリース7.0
E05176-03
  目次へ
目次
索引へ
索引

前へ
前へ
次へ
次へ
 

DELETE

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

アクセス制御

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

SQL構文

DELETE [FIRST NumRows] FROM [Owner.]TableName[CorrelationName]

[WHERE SearchCondition]

パラメータ

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

パラメータ
説明
FIRST NumRows
削除する行の数を指定します。FIRST NumRowsは、副問合せを使用した文ではサポートされていません。NumRowsには、正のINTEGERか動的パラメータのプレースホルダを指定する必要があります。動的パラメータのプレースホルダの構文は、?または:DynamicParameterです。動的パラメータの値は、文の実行時に設定されます。
[Owner.]TableName
[CorrelationName]
検索条件を満たす行を削除する表を指定します。

Owner.]TableName [CorrelationName]

ここで、

[Owner.]TableNameには、削除する表を指定します。

CorrelationNameは、直前で指定した表へのシノニムを指定します。その表の列にアクセスする際、DELETE文の中で実際の表名ではなく相関名を使用します。相関名は、基本名の構文ルールを満たしている必要があります(「基本名」を参照)。

SearchCondition
削除する行を指定します。検索条件に一致する行がない場合、表は変更されません。WHERE句を省略した場合は、すべての行が削除されます。検索条件には副問合せを含めることができます。

説明

例5.96

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

DELETE FROM Purchasing.OrderItems

WHERE Quantity < 50;

例5.97

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

DELETE FROM orders A

WHERE EXISTS (SELECT 1 FROM orders B

WHERE A.id = B.id and A.rowid < B.rowid);

例5.98

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

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';

例5.99

ビジーな表を削除しようとするとエラーが発生します。この例では、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.