sql >> Database >  >> RDS >> Sqlserver

Sql-server bij update huidige tijdstempel instellen

En als je echt een tijdstempel nodig hebt, maak dan een trigger bij invoegen en update die de kolom bijwerkt met de huidige timestmap.

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

Om een ​​enkele rij (die is bewerkt of ingevoegd) bij te werken, gebruikt u

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;

Dit zou alles moeten zijn wat je nodig hebt. GETUTCDATE() als je het in UTC wilt (waar ik de voorkeur aan geef)

SQL Server kent absoluut de rijen die het verwerkt

Ja, raad eens - want dat is precies wat je tegen SQL Server zegt:werk alle rijen in de tabel bij.

Sets hebben geen huidige rij;) Daar begint het probleem.

De enige manier om dat precies te doen zoals je wilt, is in mijn antwoord aan het begin:een tijdstempel. Vanwege de misvattingen voeg ik echter een advies toe:koop een boek over de basisprincipes van SQL.



  1. Zijn mysql_real_escape_string() en mysql_escape_string() voldoende voor app-beveiliging?

  2. Hoe een tabel optimaliseren voor AVG-query's?

  3. MySQL 5.6 EOL-aankondiging

  4. ORA-00913 Fout bij gebruik van veel IN-instructie