この例では、「削除された」疑似テーブルを利用できます。次のようなもの:
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;
明らかに、「出力を削除」することができます。 3番目のテーブルに参加するために何かが必要な場合は、2番目の削除でも同様です。
補足として、insertステートメントでinserted。*を実行し、updateステートメントでinserted。*とdeleted。*の両方を実行することもできます。
編集: また、table1にトリガーを追加してtable2 + 3から削除することを検討しましたか?暗黙のトランザクションの内部にいて、「挿入されました。」と「削除されました。」もあります。 「疑似テーブルが利用可能です。