Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Acionar inserir valores antigos - valores que foram atualizados


Em seu gatilho, você tem duas pseudo-tabelas disponíveis, Inserted e Deleted , que contêm esses valores.

No caso de um UPDATE, o Deleted tabela conterá os valores antigos, enquanto o Inserted tabela contém os novos valores.

Então, se você quiser registrar o ID, OldValue, NewValue no seu gatilho, você precisaria escrever 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

Basicamente, você se junta ao Inserted e Deleted pseudo-tables, pegue o ID (que é o mesmo, presumo, em ambos os casos), o valor antigo do Deleted tabela, o novo valor do Inserted table, e você armazena tudo na LogTable