V tomto příkladu můžete využít výhod "smazané" pseudo tabulky. Něco jako:
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;
Samozřejmě můžete provést „výstup odstraněn“. na druhém smažte také, pokud jste potřebovali něco, k čemu se chcete připojit ke třetímu stolu.
Jako vedlejší poznámku můžete také provést insert.* v příkazu insert a oba vložené.* a delete.* v příkazu update.
UPRAVIT: Také jste uvažovali o přidání spouštěče do tabulky 1 pro odstranění z tabulky 2 + 3? Dostanete se do implicitní transakce a také budete mít „vloženo.“ a „smazáno“. " pseudo-tabulky k dispozici.