SQL Server で INNER JOIN を使用した複数のテーブルからの削除
MySQL とは異なり、SQL Server は、内部結合。ただし、次の回避策で同じ効果を得ることができます。
ステップ 1: 「削除された」疑似テーブルを使用する
「@deletedIds」という名前の一時テーブルを作成します。削除された行のIDを最初から保存します。 table:
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;
ステップ 2: 後続のテーブルから削除
「@deletedIds」テーブルを使用して後続のテーブルから削除します:
delete from t2 from table2 as t2 inner join @deletedIds as d on d.id = t2.id; delete from t3 from table3 as t3 ...
ステップ 3: をコミットするトランザクション
トランザクションをコミットして、変更を永続的にします:
commit transaction;
注: 必要に応じて、2 番目の delete ステートメントから deleted.id を出力できます。 3 番目のテーブルと結合します。
代替アプローチ:トリガー
table1 から行が削除されたときに table2 と table3 から自動的に削除するトリガーを table1 で使用することを検討してください。これにより、参照整合性が保証され、手動で削除する必要がなくなります。
以上がINNER JOIN を使用して複数の SQL Server テーブルから行を削除する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。