Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Le déclencheur insère les anciennes valeurs - les valeurs qui ont été mises à jour

Dans votre déclencheur, vous avez deux pseudo-tables disponibles, Inserted et Deleted , qui contiennent ces valeurs.

Dans le cas d'une UPDATE, le Deleted table contiendra les anciennes valeurs, tandis que le Inserted table contient les nouvelles valeurs.

Donc, si vous souhaitez enregistrer le ID, OldValue, NewValue dans votre déclencheur, vous devez écrire quelque chose comme :

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

En gros, vous rejoignez le Inserted et Deleted pseudo-tables, récupérez l'ID (qui est le même, je présume, dans les deux cas), l'ancienne valeur du Deleted table, la nouvelle valeur de la table Inserted table, et vous stockez tout dans le LogTable