注意!私にはトリガを使う必要があります!次のタスクを実行するために必要な唯一の方法は、トリガを使用することです!SQL Server 2014、trigger:削除された行を反復処理する方法は?
質問があります - 特定のテーブルの行S削除で呼び出されるトリガーが必要です。トリガーは、削除されたすべての行を繰り返し実行し、現在の反復行の値に応じていくつかのコードを実行します。
例えば、私はトリガーがここにあるコマンドによって
DELETE FROM books WHERE id=5
を1行 を削除するときに動作しており、このトリガーを作った:だから
GO
CREATE TRIGGER onBookDelete ON books
INSTEAD OF DELETE
AS
DECLARE @book_id int
BEGIN
SET NOCOUNT ON;
SELECT id FROM deleted
SET @book_id = (SELECT id FROM deleted)
PRINT @book_id
BEGIN
DELETE FROM "books-topics" WHERE [email protected]_id
DELETE FROM "books-genres" WHERE [email protected]_id
DELETE FROM books WHERE [email protected]_id
END
END;
、私が達成したいもの - であるが同じタスクでトリガーを作成するには、を使用しますが、一度に多くの行を削除すると機能するはずです。たとえば、
DELETE FROM books WHERE id=5 OR id=3 OR id=8
私が意味する、同じタスクで10
は、例えば、
DELETE FROM "books-topics" WHERE id=DELETEDROW.book_id
DELETE FROM "books-genres" WHERE id=DELETEDROW.book_id
DELETE FROM books WHERE id=DELETEDROW.book_id
をこの持っている[XYPropblem](http://meta.stackexchange.com/questions/66377/what -is-the-xy-problem)それの上に書かれています。あなたが使用しようとしているソリューションではなく、解決しようとしている問題について質問を編集してください。 –
「ON DELETE CASCADE」で外部キーを宣言するだけではどうですか? –
行を削除した後に何かしたい場合は、AFTERトリガーを使用します。削除をカスケードするためにトリガーは必要ありません。 –