テーブルの行を削除します。
Synopsis
DELETE restriction FROM table-name
WHERE conditional-expression
DELETE restriction FROM table-name
WHERE CURRENT OF cursor
AND conditional-expression
DELETE コマンドは、指定条件に適合する行をテーブルから削除します。テーブルからの行の削除は、直接、またはビュー経由が可能です。ビュー経由で削除する場合は、
CREATE VIEW で説明されているように、必要条件や制限事項に従います。
また、
DELETE 操作は、削除される行の数に %ROWCOUNT ローカル変数を設定します。
-
%NOCHECK
DELETE をチェックする外部キー参照動作を抑制します。
-
%NOLOCK
DELETE 時に行をロックしません。単独のユーザ/処理がデータベースを更新する際にのみ使用します。
-
%NOINDEX インデックス・マップは
DELETE 処理中には削除されません。
-
%NOTRIGGER ベース・テーブル・トリガは DELETE 処理中にはかかりません。
%NOLOCK を指定しない場合、Caché は、
INSERT、
UPDATE、および
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'