Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Trigger zum Einfügen alter Werte – Werte, die aktualisiert wurden

In Ihrem Trigger stehen Ihnen zwei Pseudotabellen zur Verfügung, Inserted und Deleted , die diese Werte enthalten.

Bei einem UPDATE wird der Deleted Tabelle enthält die alten Werte, während die Inserted Tabelle enthält die neuen Werte.

Wenn Sie also ID, OldValue, NewValue protokollieren möchten In Ihrem Trigger müssten Sie so etwas schreiben wie:

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

Im Grunde nehmen Sie an den Inserted teil und Deleted Pseudo-Tabellen, holen Sie sich die ID (die in beiden Fällen dieselbe ist, nehme ich an), den alten Wert aus Deleted Tabelle, der neue Wert aus der Inserted Tabelle, und Sie speichern alles in der LogTable