Можете да се възползвате от "изтритата" псевдо таблица в този пример. Нещо като:
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;
Очевидно можете да направите „изход изтрит“. при втората изтрийте също, ако имате нужда от нещо, към което да се присъедините за третата маса.
Като странична бележка можете също да направите inserted.* в израз за вмъкване и както вмъкнат.*, така и изтрит.* в израз за актуализиране.
РЕДАКТИРАНЕ: Освен това, обмисляли ли сте да добавите тригер към таблица 1 за изтриване от таблица 2 + 3? Ще бъдете вътре в неявна транзакция и също така ще имате „вмъкнато.“ и „изтрито“. " налични са псевдотаблици.