So Identifizieren Sie Die Auslöser ausgelöst (aktualisieren oder Löschen)
Wenn ich mit einem trigger, der Trigger bei jedem update-oder Delete-von der Bezahlung Tabelle, Wie kann ich herausfinden, welche Art von trigger, die aufgetreten sind (Wenn ich genauer erklären, die trigger-Funktion aufgerufen, weil der die Aktualisierung eines Datensatzes oder löschen eines Datensatzes.)
Weil ich brauche es, Informationen zu speichern, auf meinem anderen Tabelle.
- Dieser Beitrag könnte helfen: stackoverflow.com/questions/5252802/...
- Sie wirklich brauchen, um zu identifizieren, die Produkt-Datenbank, die Sie verwenden; die Antwort wird davon abhängen, dass.
- Ich fand die Antwort. Vielen Dank für jeden, der die Zeit auf meine Frage.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Unterricht: beim einfügen von Daten in die Tabelle, nur "eingesteckt" hat die neu eingefügten Zeilen; wenn Sie Daten löschen aus der Tabelle, nur 'gelöscht' hat die gelöschten Zeilen; wenn Sie die update-Tabelle, die "eingelegt" speichert die neuen Zeilen, die "gelöscht" speichert die alten Zeilen.
Ich denke, dieses Beispiel kann Ihnen einen Tipp geben. (SQL Server 2012)
Beispiel:
Beispiel-Tabelle Definition:
Trigger:
Test-code:
Testergebnis:
1. Trigger für insert-Aktion
2. Trigger für update-Aktion
3. Trigger durch die Aktion löschen
Einen trick, den ich verwende während der Fehlersuche ist die Verwendung eines DRUCK innerhalb der trigger, der auf den trigger name. Wenn Sie
COUNT(*) FROM INSERTED
undCOUNT(*) FROM DELETED
können Sie dann beobachten Sie die Nachrichten-Ausgabe (SSMS zumindest) zu sehen, die Trigger ausgelöst, die um Sie gefeuert, und wenn es war ein insert, update oder delete, die es ausgelöst hat. EinfügtCOUNT(*)=0
für GELÖSCHT, Löscht habenCOUNT(*)=0
für EINGEFÜGT und aktualisiert werden müssenCOUNT(*)>0
für beide EINGEFÜGT und GELÖSCHT werden.MS-SQL-Server?
Nicht.
Gibt es Einzel-Befehle in SQL zur Folge-updates, inserts und deletes gleichzeitig (siehe ZUSAMMENFÜHREN, zum Beispiel). Der trigger wird einmal aufgerufen werden, mit dem [gelöscht], [eingefügt], und [aktualisiert] pseudo-Tabellen, die alle aufgefüllt. Es macht keinen Sinn darüber zu reden, ob der eine oder andere passiert ist.