A pokud opravdu potřebujete časové razítko - pak při vložení a aktualizaci vytvořte spouštěč, který aktualizuje sloupec aktuální časovou mapou.
CREATE TRIGGER dbo.trgAfterUpdate ON dbo.YourTable
AFTER INSERT, UPDATE
AS
UPDATE dbo.YourTable
SET last_changed = GETDATE()
FROM Inserted i
Pro aktualizaci jednoho řádku (který byl upraven nebo vložen) byste měli použít
CREATE 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;
To by mělo být vše, co potřebujete. GETUTCDATE(), pokud to chcete v UTC (což preferuji)
SQL Server absolutně zná řádky, které zpracovává
Jo, hádejte co - protože to je přesně to, co říkáte SQL Server:Aktualizujte všechny řádky v tabulce.
Sady nemají aktuální řádek;) Zde začíná problém.
Jediný způsob, jak to udělat přesně tak, jak chcete, je v mé odpovědi na začátku:časové razítko. Kvůli mylným představám však přidávám radu:pořiďte si knihu o základech SQL.