Und wenn Sie wirklich einen Zeitstempel brauchen – dann machen Sie einen Trigger beim Einfügen und Aktualisieren, der die Spalte mit der aktuellen Zeitstempelkarte aktualisiert.
CREATE TRIGGER dbo.trgAfterUpdate ON dbo.YourTable
AFTER INSERT, UPDATE
AS
UPDATE dbo.YourTable
SET last_changed = GETDATE()
FROM Inserted i
Um eine einzelne Zeile (die bearbeitet oder eingefügt wurde) zu aktualisieren, sollten Sie
verwendenCREATE TRIGGER dbo.trgAfterUpdate ON dbo.YourTable
AFTER INSERT, UPDATE
AS
UPDATE f set LastUpdate=GETDATE()
FROM
dbo.[YourTable] AS f
INNER JOIN inserted
AS i
ON f.rowID = i.rowID;
Dies sollte alles sein, was Sie brauchen. GETUTCDATE(), wenn Sie es in UTC wollen (was ich bevorzuge)
SQL Server kennt absolut die Zeilen, die er verarbeitet
Ja, raten Sie mal - denn das ist genau das, was Sie SQL Server mitteilen:Aktualisieren Sie alle Zeilen in der Tabelle.
Sätze haben keine aktuelle Zeile;) Hier beginnt das Problem.
Die einzige Möglichkeit, dies genau so zu tun, wie Sie es möchten, steht in meiner Antwort am Anfang:ein Zeitstempel. Aufgrund der Missverständnisse füge ich jedoch einen Rat hinzu:Holen Sie sich ein Buch über SQL-Grundlagen.