テーブルの行を削除します。
Synopsis
DELETE restriction FROM table-name 
     WHERE conditional-expression
DELETE restriction FROM table-name 
     WHERE CURRENT OF cursor
     AND conditional-expression
引数
restriction オプション — キーワード %NOLOCK、%NOCHECK、%NOINDEX、%NOTRIGGER のうちの 1 つ、またはこれらキーワードのコンマで区切られたリスト。
FROM table-name 行を削除する テーブル。テーブル行が削除されるビューの指定をすることができます。詳細は、"FROM" を参照してください。
WHERE conditional-expression オプション — 削除される行の数を制限するのに使用される条件を指定。WHERE 節 (または WHERE CURRENT OF 節) が指定されていない場合、DELETE はテーブルからすべての行を削除します。詳細は、"WHERE" を参照してください。
WHERE CURRENT OF cursor オプションDELETE が現在の cursor 位置で実行されることを指定します。これはテーブルを指すカーソルです。カーソルが指す行とその行に続くすべての行を削除するか、または (AND 節が指定されている場合は) 条件式と一致するすべての行を削除します。詳細は、"WHERE CURRENT OF" を参照してください。
AND conditional-expression オプションWHERE CURRENT OF 節と共に使用して、削除を行う条件をさらに制限します。
概要
DELETE コマンドは、指定条件に適合する行をテーブルから削除します。テーブルからの行の削除は、直接、またはビュー経由が可能です。ビュー経由で削除する場合は、CREATE VIEW で説明されているように、必要条件や制限事項に従います。
WHERE CURRENT OF 節が使用される場合は、現在のカーソル位置で削除処理が行われます。指定位置での実行については、"WHERE CURRENT OF" を参照してください。
また、DELETE 操作は、削除される行の数に %ROWCOUNT ローカル変数を設定します。
制限引数
restriction 引数を指定すると、以下のように処理を制限します。
トランザクションでのロック
%NOLOCK を指定しない場合、Caché は、INSERTUPDATE、および DELETE 操作時に標準のロックを実行します。一意フィールドの値は、現行のトランザクションの間、ロックされます。ロックしきい値は、テーブルごとに 1000 ロックです。そのため、トランザクション時にテーブルから 1000 を超える一意フィールド値を削除する場合は、ロックしきい値に到達し、Caché はロック・レベルを自動的に、一意フィールド値ロックからテーブル・ロックへと上げます。これによってトランザクション時に、ロック・テーブルをオーバーフローすることなく、大規模な削除を実行できます。DELETE ロックの詳細は、このドキュメントの "SQL の概念" の "トランザクション" を参照してください。
以下の例は、TempEmployees テーブルからすべての行を削除します。
DELETE FROM TempEmployees
以下の例は、Employees テーブルから、従業員番号 234 番を削除します。
DELETE
     FROM Employees
     WHERE EmpId = 234
以下の例は、CurStatus 列が "Retired" に設定されているすべての行を、ActiveEmployees テーブルから削除します。
DELETE FROM ActiveEmployees
     WHERE CurStatus = 'Retired'
関連項目