Jika Anda tidak diizinkan untuk mengubah tabel, Anda dapat melihat EXISTS
operator.
Ini akan memungkinkan Anda untuk menghapus baris dari tabel hanya jika kueri di dalam EXISTS
mengembalikan setidaknya 1 hasil. Anda dapat menggunakannya untuk memeriksa dependensi.
Anda dapat menulis 3 pertanyaan:
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 ...
Yang pertama akan mengurus catatan di C
yang mereferensikan catatan di B
yang mereferensikan catatan dalam A
yang ingin Anda hapus.
Kemudian Anda dapat menghapus catatan dari B
karena tidak ada lagi ketergantungan di C
.
Akhirnya, Anda dapat menghapus catatan dari A
menggunakan logika yang sama.