sql >> Base de Datos >  >> RDS >> Sqlserver

El servidor Sql en la actualización establece la marca de tiempo actual

Y si realmente necesita una marca de tiempo, active un disparador al insertar y actualizar que actualice la columna con el mapa de fecha y hora actual.

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

Para actualizar una sola fila (que ha sido editada o insertada) debe 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;

Estos deberían ser todo lo que necesitas. GETUTCDATE() si lo quieres en UTC (que prefiero)

SQL Server conoce absolutamente las filas que procesa

Sí, adivina qué, porque eso es exactamente lo que le dices a SQL Server:actualiza todas las filas de la tabla.

Los conjuntos no tienen una fila actual;) Ahí es donde comienza el problema.

La única forma de hacerlo exactamente como lo desea está en mi respuesta al principio:una marca de tiempo. Sin embargo, debido a los conceptos erróneos, agrego un consejo:obtenga un libro sobre conceptos básicos de SQL.