Wenn ein Trigger ausgeführt wird, ist es möglich, eine unterschiedliche Anzahl von Zeilen in eingefügten und gelöschten Tabellen ungleich Null zu haben (im Grunde eine Mischung aus Einfügung und Aktualisierungen, die zur gleichen Zeit behandelt werden)?Ist es immer möglich, gemischte Updates und Einfügungen im selben Trigger-Lauf zu haben?
Zum Beispiel könnte die eingefügte Tabelle 2 Zeilen haben und delete hätte 1 Zeile (entspricht 1 der eingefügten Zeilen) und dies würde bedeuten, dass der Trigger eine Mischung aus 1 Update behandelt (die übereinstimmenden Zeilen in eingefügten und gelöschten Tabellen)) und 1 Einsatz.
aktualisieren
Anscheinend ist der Einsatz von
merge
Befehl 1 Trigger verursachen könnten für alle Änderungen vorgenommen laufen, sehen:
Merge statement and after triggers on target table Oder auch nicht, dies testen müssen.
Nach https://www.mssqltips.com/sqlservertip/3074/use-caution-with-sql-servers-merge-statement/ die merge
Befehle verursacht Auslöser mehrmals ausgeführt werden, Aktualisierungen und Einfügungen zu trennen.
Lösung Aktualisieren
this Unter der Annahme, ist die gesamte Liste der DML Aktionen dann wird es nie der Fall sein, wenn es gemischt Einfügungen und Aktualisierungen in dem gleichen Trigger Laufe behandelt werden.
ich in der Frage festgestellt, dass es nicht für 'merge' Befehl funktioniert. Sind Sie sicher, dass es absolut keinen Umstand gibt, in dem ein Auslöser möglicherweise Aktualisierungen und Einfügungen gemischt hat? –
@ RazvanPanda - Ja. Die einzigen anderen Sprachelemente, die neben der Zusammenführung ausgelöst werden, sind insert, update, delete. Daher ist es schwierig zu verstehen, warum Sie sich vorstellen, dass dies der Fall sein könnte. löscht Feuer pro Anweisung und jede Anweisung außer der Zusammenführung kann nur eine Aktion ausführen. –
Es kann jedoch auch andere Fälle geben. Ich werde auf andere Antworten warten müssen, bevor ich stimme/akzeptiere, um mehr cetaintly zu bekommen. Außerdem müssen Sie mehr Dinge selbst ausprobieren. –