MSSQL Trigger durch Trigger auslösen
-
Hi,
ich verwende in meiner MSSQL Datenbank zwei Trigger, INSTEAD OF UPDATE und INSTEAD OF INSERT.
Anstatt einem UPDATE wird ein neuer Datensatz in die Tabelle eingefügt, um den alten nicht zu überschreiben. Dabei wird aber der INSTEAD OF INSERT Trigger nicht ausgeführt. Ist das richtig?
-
Lies mal da:
http://blog.sqlauthority.com/2007/05/18/sql-server-2005-understanding-trigger-recursion-and-nesting-with-examples/Wenn das nicht reicht einfach nochmal nachfragen
-
Hm, habs mit SET RECURSIVE_TRIGGERS ON versucht, so richtig erfolgreich wars aber nicht. sp_CONFIGURE 'nested_triggers' hat bereits den Wert 1.
Ich befürchte, das Problem könnte sein, dass ich im INSTEAD OF UPDATE Trigger einen Datensatz einfüge, der dann den INSTEAD OF INSERT Trigger auslösen soll. Laut Beschreibung funktionieren diese Schalter aber nur mit AFTER Triggern...
-
Ah, OK. Auch doof.
Hmmm...
-
Auf der anderen Seite stellt sich das Problem, dass mein Trigger in etwa so aussieht:
CREATE TRIGGER TrigAInsert ON TblA INSTEAD OF INSERT AS BEGIN INSERT INTO TblA SELECT * FROM inserted; END CREATE TRIGGER TrigAUpdate ON TblA INSTEAD OF UPDATE AS BEGIN INSERT INTO TblA SELECT * FROM inserted; END
Wenn ich nun immer die Trigger aufrufen würde, hätte ich eine schöne Rekursion, was mir ja auch nicht hilft. Vielleicht ist der bessere Weg, die INSERT Trigger Methode einfach manuell im UPDATE Trigger aufzurufen...