Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Servidor SQL na atualização definir carimbo de data/hora atual


E se você realmente precisar de um carimbo de data/hora - faça um gatilho na inserção e atualização que atualiza a coluna com o mapa de data e hora atual.
CREATE TRIGGER dbo.trgAfterUpdate ON dbo.YourTable
AFTER INSERT, UPDATE 
AS
  UPDATE dbo.YourTable
  SET last_changed = GETDATE()
  FROM Inserted i

Para atualizar uma única linha (que foi editada ou inserida) você deve usar
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;

Estes devem ser tudo o que você precisa. GETUTCDATE() se você quiser em UTC (o que eu prefiro)

O SQL Server conhece absolutamente as linhas que processa

Sim, adivinhe - porque é exatamente isso que você diz ao SQL Server:Atualize todas as linhas na tabela.

Os conjuntos não têm linha atual;) É aí que o problema começa.

A única maneira de fazer isso exatamente como você deseja é na minha resposta no início:um timestamp. Devido aos equívocos, porém, adiciono um conselho:compre um livro sobre noções básicas de SQL.