sql server trigger update-Zeit-Feld, wenn es einen wirklichen Wechsel in ein anderes Feld
Brauche ich einen trigger, der Aktualisierungen einer Zeile der Tabelle Feld, wenn ein oder mehrere Felder der Zeile aktualisiert wird.
Angenommen, Sie haben eine Mitarbeiter-Tabelle kann wie folgt Aussehen:
EmployeeId Name Address ModificationDate
1 Spears 27 Sober Road
2 Jagger 65 Straight Street
Wenn es eine wirkliche Veränderung in der Wert von jedem Feld außer der EmployeeId
und ModificationDate
Felder, die trigger generieren soll eine Zeit-Werts und Aktualisierung der ModificationDate
.
Beispiel 1 von einem wirklichen Wandel:
update dbo.Employees
set Name = 'Beggar'
where EmployeeId = 2
Beispiel 2 nicht wirklich ändern:
update dbo.Employees
set Name = 'Jagger'
where EmployeeId = 2
Wenn ein update in Beispiel 2 ausgeführt wird, wird der trigger sollte nicht aktualisieren, ModificationDate Feld.
Du musst angemeldet sein, um einen Kommentar abzugeben.
In einem auslösen, haben Sie Zugriff auf die 'inserted' und 'gelöscht' system-Tabellen.
Die Tabellen mit den Datensätzen in der Tabelle, die aktualisiert wurden, die von der Anweisung, die den Auslöser auszuführen.
Für ein 'UPDATE' - Schalter, den 'eingefügt' Tabelle enthält die Datensätze, wie Sie in den neuen Staat, die 'gelöscht' Tabelle enthält die Datensätze mit den alten Werten.
Müssen Sie Gebrauch machen von diesen 2 Tabellen um herauszufinden, welche Datensätze haben sich wirklich verändert, und aktualisieren Sie die ModificationDate für Datensätze.
Ich denke, die Anweisung im trigger wird in etwa so Aussehen. (Ich habe es noch nicht getestet)
Bearbeiten:
Ich habe ein wenig rumprobiert:
if update([name]) or update([address]) begin ...
BOL-link