Bạn có thể tận dụng bảng giả "đã xóa" trong ví dụ này. Một cái gì đó như:
begin transaction;
declare @deletedIds table ( id int );
delete from t1
output deleted.id into @deletedIds
from table1 as t1
inner join table2 as t2
on t2.id = t1.id
inner join table3 as t3
on t3.id = t2.id;
delete from t2
from table2 as t2
inner join @deletedIds as d
on d.id = t2.id;
delete from t3
from table3 as t3 ...
commit transaction;
Rõ ràng là bạn có thể thực hiện một 'đầu ra đã bị xóa.' trong lần xóa thứ hai, nếu bạn cần thứ gì đó để tham gia vào bảng thứ ba.
Lưu ý thêm, bạn cũng có thể chèn. * Vào câu lệnh chèn và cả chèn. * Và xóa. * Trên câu lệnh cập nhật.
CHỈNH SỬA: Ngoài ra, bạn đã cân nhắc thêm trình kích hoạt trên table1 để xóa khỏi table2 + 3 chưa? Bạn sẽ ở bên trong một giao dịch ngầm và cũng sẽ có "được chèn. " và "đã bị xóa. "có sẵn bảng giả.