Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Serwer SQL przy aktualizacji ustaw aktualny znacznik czasu

A jeśli naprawdę potrzebujesz znacznika czasu - wykonaj wyzwalacz podczas wstawiania i aktualizacji, który aktualizuje kolumnę o aktualną mapę czasu.

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

Aby zaktualizować pojedynczy wiersz (który został edytowany lub wstawiony) należy użyć

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 powinno być wszystko, czego potrzebujesz. GETUTCDATE() jeśli chcesz to w UTC (co wolę)

SQL Server absolutnie zna wiersze, które przetwarza

Tak, zgadnij co - ponieważ dokładnie to mówisz SQL Server:Zaktualizuj wszystkie wiersze w tabeli.

Zestawy nie mają aktualnego wiersza;) Tu zaczyna się problem.

Jedyny sposób, aby zrobić to dokładnie tak, jak chcesz, znajduje się w mojej odpowiedzi na początku:znacznik czasu. Jednak z powodu nieporozumień dodaję radę:pobierz książkę o podstawach SQL.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Schemat bazy danych, autoinkrementacja

  2. Jak wywołać procedurę składowaną za pomocą PHP i SQL Server 2008

  3. Zmień typ zdefiniowany przez użytkownika w SQL Server

  4. Konwertuj czas dziesiętny na godziny i minuty

  5. najszybszy sposób na aktualizację kolumny varchar z tekstem