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

Desencadenar la inserción de valores antiguos:valores que se actualizaron

En su disparador, tiene dos pseudo-tablas disponibles, Inserted y Deleted , que contienen esos valores.

En el caso de una ACTUALIZACIÓN, el Deleted la tabla contendrá los valores antiguos, mientras que Inserted la tabla contiene los nuevos valores.

Entonces, si desea registrar el ID, OldValue, NewValue en su disparador, necesitaría escribir algo como:

CREATE TRIGGER trgEmployeeUpdate
ON dbo.Employees AFTER UPDATE
AS 
   INSERT INTO dbo.LogTable(ID, OldValue, NewValue)
      SELECT i.ID, d.Name, i.Name
      FROM Inserted i
      INNER JOIN Deleted d ON i.ID = d.ID

Básicamente, te unes al Inserted y Deleted pseudo-tablas, tome la ID (que es la misma, supongo, en ambos casos), el valor anterior de Deleted tabla, el nuevo valor de Inserted y almacena todo en la LogTable