sql >> Database teknologi >  >> RDS >> Sqlserver

SQL-server ved opdatering indstiller nuværende tidsstempel

Og hvis du virkelig har brug for et tidsstempel - så lav en trigger ved indsættelse og opdatering, der opdaterer kolonnen med det aktuelle tidskort.

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

For at opdatere en enkelt række (som er blevet redigeret eller indsat) skal du bruge

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;

Disse burde være alt hvad du behøver. GETUTCDATE() hvis du vil have det i UTC (hvilket jeg foretrækker)

SQL Server kender absolut de rækker, den behandler

Ja, gæt hvad - for det er præcis, hvad du fortæller SQL Server:Opdater alle rækker i tabellen.

Sæt har ingen aktuel række;) Det er der problemet starter.

Den eneste måde at gøre det præcis, som du vil, er i mit svar i begyndelsen:et tidsstempel. På grund af misforståelserne tilføjer jeg dog et råd:få en bog om grundlæggende SQL.



  1. Er ordre efter i udsigt garanteret rækkefølge af udvalgt?

  2. Gensample på tidsseriedata

  3. Sådan skifter du database ved hjælp af PostgreSQL

  4. installer og konfigurer OCI8 til at forbinde oracle til php