テーブルの変更が許可されていない場合は、EXISTS
を参照してください。 EXISTS
内のクエリが存在する場合にのみ、テーブルから行を削除できます。 少なくとも 1 つの結果を返します。依存関係のチェックに使用できます。
3 つのクエリを記述できます:
DELETE C c
WHERE EXISTS (SELECT 1
FROM B b
WHERE c.b = b.b
AND EXISTS (SELECT 1
FROM A a
WHERE a.a = b.a
AND ... ));
DELETE B b
WHERE EXISTS (SELECT 1
FROM A a
WHERE a.a = b.a
AND ...);
DELETE A a
WHERE ...
最初のものは C
でレコードを処理します B
のレコードを参照する A
のレコードを参照する
その後、B
からレコードを削除できます。 C
には依存関係がなくなったので .
最後に、A
からレコードを削除できます。 同じロジックを使用します。