Nếu bạn không được phép sửa đổi các bảng, bạn có thể xem EXISTS
toán tử.
Nó sẽ cho phép bạn xóa các hàng khỏi bảng chỉ khi truy vấn bên trong EXISTS
trả về ít nhất 1 kết quả. Bạn có thể sử dụng nó để kiểm tra sự phụ thuộc.
Bạn có thể viết 3 truy vấn:
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ái đầu tiên sẽ xử lý bản ghi trong C
tham chiếu đến các bản ghi trong B
tham chiếu đến các bản ghi trong A
mà bạn muốn xóa.
Sau đó, bạn có thể xóa các bản ghi khỏi B
vì không còn phụ thuộc nào nữa trong C
.
Cuối cùng, bạn có thể xóa các bản ghi khỏi A
sử dụng cùng một logic.