sql >> Databasteknik >  >> RDS >> Sqlserver

SQL-server vid uppdatering ställ in aktuell tidsstämpel

Och om du verkligen behöver en tidsstämpel - gör sedan en trigger vid infogning och uppdatering som uppdaterar kolumnen med den aktuella tidskartan.

CREATE TRIGGER dbo.trgAfterUpdate ON dbo.YourTable
AFTER INSERT, UPDATE 
AS
  UPDATE dbo.YourTable
  SET last_changed = GETDATE()
  FROM Inserted i

För att uppdatera en enskild rad (som har redigerats eller infogats) bör du använda

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;

Dessa borde vara allt du behöver. GETUTCDATE() om du vill ha det i UTC (vilket jag föredrar)

SQL Server känner absolut till raderna den bearbetar

Ja, gissa vad - för det är precis vad du säger till SQL Server:Uppdatera alla rader i tabellen.

Uppsättningar har ingen aktuell rad;) Det är där problemet börjar.

Det enda sättet att göra det precis som du vill är i mitt svar i början:en tidsstämpel. På grund av missuppfattningarna lägger jag dock till ett råd:skaffa en bok om grunderna i SQL.



  1. Fråga korsning med activerecord

  2. Vad är det enklaste sättet att definiera en lokal variabel i Oracle?

  3. mysqldump på fjärrserver

  4. Lat laddning från databasen när användaren rullar ner sidan (liknar Twitter och Facebook)