Ein expliziter Wert kann nicht in eine timestamp-Spalte eingefügt werden. Verwenden Sie INSERT mit einer Spaltenliste, um die timestamp-Spalte auszuschließen, oder fügen Sie einen DEFAULT-Wert in die timestamp-Spalte ein.
CREATETRIGGER TR_UPDATE ON tb_Adresse
INSTEADOFUPDATE
AS
BEGIN
-- letzten gültigen Datensatz inaktivieren
UPDATEtb_AdresseSET
Gültig_Bis =GETDATE(),
Ist_Gültig = 0
FROM tb_Adresse INNERJOIN Inserted ON tb_Adresse.ID = Inserted.ID
WHEREtb_Adresse.Ist_Gültig=1
;
-- neuen Datensatz einfügen
INSERTINTO tb_Adresse
SELECT*FROM Inserted
;
END;
Wenn ich eine Spaltenliste detailliert aufsetze kommt folgende Fehlermeldung, weil ich wie angegeben die Spalte mit dem "timestamp" auslasse....
Ein Defaultwert gemäss erster Fehlermeldung kann, gemäss meinen Recherchen auf timestamp auch nicht gesetzt werden
SELECT * FROM Inserted mit Spalte "timestamp" und Fehlermeldung
in MS SQL Server Forum
Geschrieben
Guten Tag allerseits, folgender Code gibt mir den Fehler ...
CREATE TRIGGER TR_UPDATE ON tb_Adresse
INSTEAD OF UPDATE
AS
BEGIN
-- letzten gültigen Datensatz inaktivieren
UPDATE tb_Adresse SET
Gültig_Bis = GETDATE(),
Ist_Gültig = 0
FROM tb_Adresse INNER JOIN Inserted ON tb_Adresse.ID = Inserted.ID
WHERE tb_Adresse.Ist_Gültig=1
;
-- neuen Datensatz einfügen
INSERT INTO tb_Adresse
SELECT * FROM Inserted
;
END;
Wenn ich eine Spaltenliste detailliert aufsetze kommt folgende Fehlermeldung, weil ich wie angegeben die Spalte mit dem "timestamp" auslasse....
Ein Defaultwert gemäss erster Fehlermeldung kann, gemäss meinen Recherchen auf timestamp auch nicht gesetzt werden
Insert mit Tabellenliste:
SELECT ID, Gültig_Ab,Gültig_Bis,Ist_Gültig,ZHd_Name,Strasse,StrasseZusatz,PLZ,
Ort,Land,Bearbeitet_Durch,KundeID FROM Inserted
Nachricht 213, Stufe 16, Status 1, Prozedur TR_UPDATE, Zeile 16 [batchstartzeile 0]