J'ai un déclencheur de table sur UPDATE et INSERT qui ajoute une ligne à une autre table. Il n'a besoin d'ajouter une ligne que si l'une des quatre colonnes est modifiée. J'ai essayé d'utiliser IF UPDATE (col) pour tester les changements mais il a un angle mort. Il teste seulement qu'une certaine valeur est entrée. J'ai besoin d'approfondir, j'ai besoin de comparer les anciennes et les nouvelles valeurs pour voir qu'un vrai changement s'est produit. Il doit fonctionner avec INSERT et UPDATE.
Dans le cas d'une MISE À JOUR, c'est facile car les tables insérées et supprimées ont des valeurs que je peux comparer dans le déclencheur. Cependant, pour INSERT, seule la table d'insertion a des valeurs. Parce que j'ai besoin de tout cela dans le même déclencheur, comment gérer ce cas INSERT?
Voici le script du déclencheur que je souhaite modifier:
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