IsDeletedとしてフラグが立てられていない2つの名前の挿入を避けるために、テーブルにトリガーを書き込もうとしています。しかし、選択の最初の部分には挿入された部分が含まれているため、条件は常に真です。私はFORキーワードを使用するとINSERTより前にトリガが実行されますが、この場合、挿入された行はすでにテーブルにあります。私は間違っていますか、これはどのようにトリガーが働くかです。FORトリガがアクションに対して実行されないのはなぜですか?
ALTER TRIGGER TriggerName
ON MyTable
FOR INSERT, UPDATE
AS
BEGIN
If exist (select [Name] From MyTable WHERE IsDeleted = 0 AND [Name] in (SELECT [Name] FROM INSERTED)
BEGIN
RAISERROR ('ERROR Description', 16, 1);
Rollback;
END
END
代わりに、実行しているコマンドの代わりにトリガーが実行されることを意味します –