Im Folgenden sind Spalten in meiner Tabelle Table1
:Wie aktualisiert man eine Spalte in einer Tabelle im UPDATE-Trigger derselben Tabelle?
Id(identity), Field1(VARCHAR), Field2(VARCHAR), Field3(CHAR)
Ich habe Trigger auf UPDATE von Field1
dieser Tabelle:
CREATE TRIGGER [dbo].[My_TRG] ON [dbo].[Table1]
FOR UPDATE
NOT FOR REPLICATION
AS
DECLARE @Id INT...
.....
.....
BEGIN
.....
SELECT @Id = Id FROM Inserted
UPDATE [Table1] SET [Field3] = 'NEW' WHERE [Field3] IS NULL AND [email protected]
.....
.....
END
So bin Aktualisierung ich andere Spalte derselben Tabelle für denselben Datensatz, der ist in UPDATE-Trigger aktualisiert werden. @Id
im obigen Trigger ist der Bezeichner des Datensatzes, der gerade aktualisiert wird.
Die UPDATE-Anweisung war früher nicht da und Trigger funktionierte gut. Jetzt muss ich diese UPDATE-Anweisung im Trigger hinzufügen.
Es wirft folgende Ausnahme:
Zeile kann nicht für die Aktualisierung gefunden werden. Einige Werte wurden seit dem letzten Lesen geändert.
Ich kann den Standardwert für Field3
nicht festlegen. Field3
sollte NUR WENN Field1
gesetzt sein. Andernfalls sollte es null
sein.
Wie soll ich das machen?
Möchten Sie nur einen Standard hinzufügen? dann benutze einen Standard! https://www.w3schools.com/sql/sql_default.asp –
Beachten Sie, dass ausgelöst wird * einmal pro Anweisung *, nicht * einmal pro Zeile *. Dies bedeutet, dass Sie Code schreiben müssen, der mit 0, 1 oder * multiple * Zeilen umgehen kann, die aktualisiert wurden. (Bezieht sich vielleicht nicht auf Ihr aktuelles Problem, aber es lohnt sich, daran zu denken) –
Das ist nicht, was Ihr Auslöser tut. Wie auch immer ... warum benutzt du keine berechnete Spalte? –