TSQL-After Update-Trigger auf update prüfen auf mehrere Spalten in einem UPDATE, WENN
Die grundlegende syntax für einen After Update-trigger in TSQL ist:
CREATE TRIGGER [dbo].[triggerName]
ON [dbo].[Table]
AFTER UPDATE, INSERT --trigger when Update or Insert in table
AS BEGIN
SET NOCOUNT ON;
IF UPDATE (ColumnA) -- if ColumnA updates start
begin
UPDATE Table
SET ColumnC = ColumnA + ColumnB -- recalculate Column C
end
IF UPDATE (ColumnB) -- if ColumnB updates start
begin
UPDATE Table
SET ColumnC = ColumnA + ColumnB -- recalculate Column C
end
END
Nun oben arbeiten konnte, denke ich, aber ist es möglich, beide miteinander zu kombinieren, WENN UPDATES in einem?:
So etwas wie dieses:
IF UPDATE (ColumnA) OR (ColumnB) -- if ColumnA or ColumnB updates start
begin
UPDATE Table
SET ColumnC = ColumnA + ColumnB -- recalculate Column C
end
Könnten Sie eine berechnete Spalte natürlich, aber aus Neugier würde ich gerne wissen, wenn Sie können prüfen, ob Aktualisierungen für mehrere Spalten auf einmal in einem trigger und dann das after update-trigger Modifikation.
Auch jetzt würde Sie wieder die Berechnung der
ColumnC
für alle Zeilen in der Tabelle - nicht nur die betroffenen Zeilen, die durch eine insert-oder update-operation.....InformationsquelleAutor J3FFK | 2014-08-01
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dies ist ein bisschen lang für einen Kommentar.
UPDATE()
ist ein Funktion verwendet, die in einem trigger. Es ist keine spezielle syntax wieif UPDATE()
. Soweit ich weiß, Triggern ermöglichen Sie, um mehrere Bedingungen zu kombinieren, die in einerif
- Anweisung.Aber noch mehr auf den Punkt, Lesen Sie die Dokumentation auf
UPDATE()
. Die sehr Beispiel in der Dokumentation:Also, die richtige syntax verwenden für Ihre und Sie werden in Ordnung sein:
Jedoch, ich würde vorschlagen, dass Sie verwenden eine berechnete Spalte statt.
InformationsquelleAutor Gordon Linoff
Können Sie
COLUMNS_UPDATED
:Und einfach überprüfen, für alle die bits, die Sie interessiert sind, setzen bitweise Operatoren:
Natürlich bedeutet dies dann hängt die Reihenfolge der Spalten, die in der Regel eine schlechte Sache zu hängen, und es wird auch nicht die Luft zu sprengen, wenn die Spalte, um zu einem späteren Zeitpunkt geändert werden.
InformationsquelleAutor Damien_The_Unbeliever