このドキュメントでは、次のトピックについて説明します。
関連機能グループ:データベースへのアクセスと更新
SQL DELETE ステートメントは、カーソルを使用しないでテーブル内の行を削除したり("検索済"DELETE)、カーソルが位置づけられたテーブル内の行を削除したり("位置決め"DELETE)するために使用します。
2 つの異なる構造が可能です。
"検索済" DELETEステートメントは、どの SELECT ステートメントにも関連しない独立したステートメントです。単一のステートメントで、ゼロ、1 つ、複数、またはすべての行をテーブルから削除できます。削除される行はテーブルに適用する search-condition によって決定されます。オプションで、テーブル名に correlation-name を割り当てることができます。
注意:
"検索済" DELETE で実際に削除された行の数は、システム変数 *ROWCOUNT(『システム変数』ドキュメントを参照)で確認できます。
一般セットの構文:
DELETE FROM table-name [correlation-name] [WHEREsearch-condition]
|
拡張セットの構文:
DELETE FROM table-name [correlation-name]
|
|||||||
[WHEREsearch-condition]
|
|||||||
|
|
WITH |
|
|
|
[QUERYNO integer]
|
||
構文図で使用されている記号については、「構文記号」を参照してください。
構文要素の説明:
| 構文要素 | 説明 | |
|---|---|---|
FROM
table-name |
FROM 節:
この節では、行を削除するテーブルを指定します。 |
|
correlation-name |
相関名:
指定は任意です。テーブル名に correlation-name を割り当てることができます。 |
|
WHERE
search-condition |
WHERE 節:
この節では、削除する行の選択条件を指定します。
|
|
WITH |
WITH 分離レベル節:
この節は SQL 拡張セットに含まれます。 この節では、削除する行を検索するときに使用する分離レベルを明示的に指定できます。 DB2 データベースにのみ有効です。他のデータベースに使用すると、ランタイムエラーが発生します。 |
|
CS |
カーソルの安定 | |
RR |
繰り返し可能な読み込み | |
RS |
読み込みの安定 | |
QUERYNO
integer |
QUERYNO 節:
この節は SQL 拡張セットに含まれます。 この節は、現在はサポートされていないため無視されます。 |
|
"位置決め"DELETE ステートメントは、常にデータベースループ内のカーソルを参照します。したがって、位置決め DELETE ステートメントで参照されるテーブルは、対応する SELECT ステートメントで参照されるテーブルと同一のものである必要があります。そうでない場合はエラーメッセージが返されます。位置決め DELETE を非カーソル選択で使用することはできません。
機能的に、位置決め DELETE ステートメントは "ネイティブ" Natural DELETE ステートメントに対応します。
DELETE
FROM table-name WHERE
CURRENT OF CURSOR [(r)]
|
構文図で使用されている記号については、「構文記号」を参照してください。
構文要素の説明:
| 構文要素 | 説明 |
|---|---|
FROM
table-name WHERE CURRENT OF
CURSOR |
FROM 節:
この節では、行を削除するテーブルを指定します。 |
(r) |
ステートメント参照:
|
FOR ROW ... OF
ROWSET |
FOR ROW … OF ROWSET 節:
この節は SQL 拡張セットに含まれます。 位置決め |