Có thể xóa bằng cách sử tham gia báo cáo để đủ điều kiện tập bị xóa, chẳng hạn như sau:Có thể xóa từ nhiều bảng trong cùng một câu lệnh SQL không?
DELETE J
FROM Users U
inner join LinkingTable J on U.id = J.U_id
inner join Groups G on J.G_id = G.id
WHERE G.Name = 'Whatever'
and U.Name not in ('Exclude list')
Tuy nhiên tôi quan tâm đến việc xóa cả hai bên trong những tiêu chí tham gia - cả hai kỷ lục LinkingTable
và Hồ sơ người dùng mà nó phụ thuộc vào nó. Tôi không thể biến tầng trên bởi vì giải pháp của tôi là mã khung Entity đầu tiên và các mối quan hệ hai chiều tạo ra cho nhiều đường dẫn xếp tầng.
Lý tưởng nhất, tôi muốn một cái gì đó như:
DELETE J, U
FROM Users U
inner join LinkingTable J on U.id = J.U_id
...
Cú pháp này không làm việc ra, nhưng tôi tò mò nếu một cái gì đó như thế này là có thể?
Không, câu lệnh DML chỉ có thể ảnh hưởng đến một bảng. Tùy chọn của bạn là xóa một trong các ràng buộc (và có khả năng thực thi nó bằng cách sử dụng một kích hoạt thay thế). –
Tôi nghĩ rằng bạn cần phải làm cho nó rõ ràng hơn trong câu hỏi của bạn rằng bạn có chìa khóa nước ngoài chỉ trong cả hai hướng. –
@AaronBertrand: Cảm ơn - đó là câu trả lời tôi đang tìm kiếm: Các câu lệnh DML chỉ có thể ảnh hưởng đến một bảng, và do đó những gì tôi muốn là không thể. Chúng ta sẽ phải tìm ra cách khác. Nếu bạn viết câu trả lời cho hiệu ứng đó, tôi sẽ đánh dấu nó. – bwerks