sql >> Database >  >> RDS >> Sqlserver

Trigger oude waarden invoegen - waarden die zijn bijgewerkt

In je trigger heb je twee pseudo-tabellen beschikbaar, Inserted en Deleted , die deze waarden bevatten.

In het geval van een UPDATE, de Deleted tabel zal de oude waarden bevatten, terwijl de Inserted tabel bevat de nieuwe waarden.

Dus als u de ID, OldValue, NewValue in je trigger, zou je zoiets moeten schrijven als:

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

In principe sluit je je aan bij de Inserted en Deleted pseudo-tabellen, pak de ID (die in beide gevallen hetzelfde is, neem ik aan), de oude waarde van de Deleted tabel, de nieuwe waarde uit de Inserted tabel, en je slaat alles op in de LogTable



  1. SQL Server:ongeldige kolomnaam

  2. Transacties afhandelen in MySQL

  3. functie bestaat niet, maar ik denk echt van wel

  4. Hoe maak ik het resultaat van SQL-query's met LIMIT anders in elke query?