Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

SQL Server – Nach dem Einfügen/Für das Einfügen – Rollback

Ihr INSERT -Anweisung wird immer in einer Transaktion ausgeführt - entweder haben Sie explizit eine definiert, oder wenn nicht, verwendet SQL Server eine implizite Transaktion.

Sie fügen eine (oder mehrere) Zeile in Ihre Tabelle ein. Dann - noch innerhalb der Transaktion - das AFTER INSERT Trigger wird ausgeführt und überprüft bestimmte Bedingungen - normalerweise mit dem Inserted innerhalb des Triggers verfügbare Pseudo-Tabelle, die die eingefügten Zeilen enthält.

Wenn Sie ROLLBACK TRANSACTION aufrufen in Ihrem Trigger, dann ja - Ihre Transaktion wird mit allem, was sie getan hat, zurückgerollt und es ist, als ob INSERT ist nie passiert - in Ihrer Datenbanktabelle wird nichts angezeigt.

Auch:FOR INSERT ist dasselbe wie AFTER INSERT in SQL Server - der Trigger wird nach ausgeführt das INSERT -Anweisung hat ihre Aufgabe erfüllt.

Eine Sache, die man im Hinterkopf behalten sollte (was viele Programmierer falsch machen):Der Trigger wird einmal pro Anweisung ausgelöst - NICHT einmal pro Reihe! Wenn Sie also 20 Zeilen auf einmal einfügen, wird der Trigger einmal ausgelöst und der Inserted Pseudo-Tabelle innerhalb des Triggers enthält 20 Zeilen. Das müssen Sie beim Schreiben des Triggers berücksichtigen - das sind Sie nicht es wird immer nur eine einzige Zeile eingefügt!