sql >> Database teknologi >  >> RDS >> Sqlserver

Trigger indsæt gamle værdier - værdier, der blev opdateret

I din trigger har du to pseudo-tabeller tilgængelige, Indsat og Slettet , som indeholder disse værdier.

I tilfælde af en OPDATERING er Slettet tabel vil indeholde de gamle værdier, mens Inserted tabel indeholder de nye værdier.

Så hvis du vil logge ID, OldValue, NewValue i din trigger, skal du skrive noget som:

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

Grundlæggende tilslutter du dig Inserted og Slettet pseudo-tabeller, tag ID'et (som er det samme, formoder jeg i begge tilfælde), den gamle værdi fra Slettet tabel, den nye værdi fra Inserted tabel, og du gemmer alt i LogTable



  1. Henter rækker i en MySQL-databasetabel ved hjælp af MySQL C API og C++

  2. Docker &Postgres:Kunne ikke binde tcp 0.0.0.0:5432 adresse, der allerede er i brug

  3. Konverter månedsnummer til månedsnavnfunktion i SQL

  4. ADVARSEL:Etablering af SSL-forbindelse uden serverens identitetsbekræftelse anbefales ikke