Ich versuche, einen Trigger für eine Tabelle zu schreiben, um die Einfügung von zwei Namen zu vermeiden, die nicht als IsDeleted gekennzeichnet sind. Aber der erste Teil der Auswahl enthält den eingefügten, und so ist die Bedingung immer wahr. Ich denke, dass die Verwendung des FOR-Schlüsselwortes dazu führt, dass der Trigger vor der INSERTION ausgeführt wird, aber in diesem Fall befindet sich die eingefügte Zeile bereits in der Tabelle. Habe ich mich geirrt oder funktionieren alle FOR Trigger?Warum FOR Trigger wird nicht vor der Aktion ausgeführt?
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
Stattdessen bedeutet, dass der Trigger ausgeführt wird anstelle des Befehls, den Sie ausführen –