Eu tenho um gatilho de tabela em UPDATE e INSERT que adiciona uma linha a outra tabela. Ele só precisa adicionar uma linha se uma das quatro colunas for alterada. Tentei usar o IF UPDATE (col) para testar alterações, mas ele tem um ponto cego. Ele apenas testa a entrada de algum valor. Preciso ir mais fundo, preciso comparar os valores antigos e os novos para ver se uma mudança verdadeira ocorreu. Ele tem que trabalhar com INSERT e UPDATE.
No caso de um UPDATE, isso é fácil, porque as tabelas inseridas e excluídas têm valores que posso comparar dentro do gatilho. No entanto, para o INSERT, apenas a tabela de inserção possui valores. Como eu preciso disso tudo no mesmo gatilho, como lidar com esse caso INSERT?
Aqui está o script do gatilho que eu quero modificar:
ALTER TRIGGER [dbo].[trATPerson_alter]
ON [mydb].[dbo].[AT_Person]
AFTER INSERT,UPDATE
AS
BEGIN
SET NOCOUNT ON;
-- Not all updates require a push
IF (UPDATE([First_Name]) OR UPDATE([Last_Name]) OR UPDATE([JobCode]) OR UPDATE([Inactive]))
BEGIN
INSERT INTO [mydb].[dbo].[AT_Person_To_Push] (
[Facility],
[VendorID],
[Person_code],
[First_Name],
[Last_Name],
[JobCode],
[Alink],
[Inactive]
)
SELECT [Facility],
[VendorID],
[Person_code],
[First_Name],
[Last_Name],
[JobCode],
[Alink],
[Inactive]
FROM inserted
END
END