Du kan drage fordel af den "slettede" pseudo-tabel i dette eksempel. Noget som:
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;
Selvfølgelig kan du lave en 'output slettet'. på den anden sletning også, hvis du havde brug for noget at deltage på til det tredje bord.
Som en sidebemærkning kan du også gøre inserted.* på en insert statement, og både inserted.* og deleted.* på en update statement.
EDIT: Har du også overvejet at tilføje en trigger på tabel1 for at slette fra tabel2 + 3? Du vil være inde i en implicit transaktion og vil også få "indsat." og "slettet. " pseudo-tabeller tilgængelige.