Ho un trigger di tabella su UPDATE e INSERT che aggiunge una riga a un'altra tabella. Deve solo aggiungere una riga se una delle quattro colonne viene modificata. Ho provato a utilizzare IF UPDATE (col) per verificare le modifiche ma ha un punto cieco. Verifica solo che è arrivato un valore. Devo andare più a fondo, ho bisogno di confrontare i valori vecchi e nuovi per vedere che si è verificato un vero cambiamento. Deve funzionare con INSERT e UPDATE.
Nel caso di un AGGIORNAMENTO è facile perché sia le tabelle inserite che quelle eliminate hanno valori che posso confrontare all'interno del trigger. Tuttavia, per INSERT solo la tabella di inserimento ha valori. Poiché ho bisogno di tutto questo nello stesso trigger, come posso gestire quel caso INSERT?
Ecco lo script del trigger che voglio modificare:
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