私は、database2.table2の行が削除されたときに、database1.table1から行を条件付きで削除する基本的なデータベーストリガーを作成しようとしています。私はトリガーには新しく、これを達成する最善の方法を学ぶことを望んでいました。これは私がこれまで持っていたものです。提案?SQL Server ON DELETEトリガー
CREATE TRIGGER sampleTrigger
ON database1.dbo.table1
FOR DELETE
AS
IF EXISTS (SELECT foo
FROM database2.dbo.table2
WHERE id = deleted.id
AND bar = 4)
-- If there is a row that exists in database2.dbo.table2
-- matching the id of the deleted row and bar=4, delete
-- it as well.
-- DELETE STATEMENT?
GO
うトリガーが発動されたことを考慮に入れる** **ステートメントごとに1回**あなたのステートメントが複数の行を削除した場合) –
@marc_s - システムでは、一度に1行しか削除されない可能性があります(アプリケーションフロントエンド)。あなたは何を意味するかを詳しく説明できますか? 'WHERE id = deleted.id'を' WHERE id IN(SELECT id FROM deleted) 'に変更するのは簡単ですか? –
@ShawnH。はい、それは簡単なはずです。私は、Marcは何とか大量削除が呼び出された場合、トリガーは行ごとではなく文全体に対して1回だけ起動するため、INを使用するといずれかの方法でソートする必要があります。 – Bridge