Ich stolpere über diesen Auslöser, wenn ich versuche, eine Datenbank zu analysieren:
Create trigger [tbl_Details_Trigger] on [tbl_Details]
Instead of Insert
As
Insert into [tbl_Details]
Select * from inserted
Für mich sieht es so aus, als ob dieser Auslöser nichts Besonderes bewirkt, und wenn er fallen gelassen wird, ist das Ergebnis dasselbe. Habe ich recht? Vermisse ich etwas
sql-server
trigger
SHR
quelle
quelle
*
, die die Beilage beschädigen könnten, wenn Sie eine Identitätsspalte haben, die nicht eingefügt werden kann. Beide Dinge sind negativ, daher kann ich mir keinen guten Grund vorstellen, dies zu verwenden.ORDER BY
Klausel tatsächlich ignorieren , wenn sie in derINSERT
Anweisung enthalten ist.Antworten:
Du hast Recht; Da dieser Trigger ein
INSTEAD OF INSERT
Trigger ist, der einfach eingefügte Daten in die Tabelle einfügt, für die der Trigger definiert ist, besteht das einzige Ergebnis darin, die Daten so einzufügen, als ob der Trigger nicht vorhanden wäre.Stellen Sie wie bei allen Änderungen sicher, dass Sie die Änderung in Ihrer Entwicklungs- / Testumgebung testen, bevor Sie diesen Auslöser in der Produktion löschen.
Interessanterweise können
IDENTITY
Sie den Trigger nicht erstellen , wenn die Tabelle eine Spalte enthält . Betrachten Sie diesen Repro, der unter SQL Server 2016+ ausgeführt wird:Ergebnisse:
quelle