Tengo un activador de tabla en ACTUALIZAR e INSERTAR que agrega una fila a otra tabla. Solo necesita agregar una fila si se cambia una de las cuatro columnas. Intenté usar IF UPDATE (col) para probar los cambios, pero tiene un punto ciego. Solo prueba que entró algún valor. Necesito ir más profundo, necesito comparar los valores antiguos y nuevos para ver que se ha producido un verdadero cambio. Tiene que trabajar con INSERTAR y ACTUALIZAR.
En el caso de una ACTUALIZACIÓN, eso es fácil porque las tablas insertadas y eliminadas tienen valores que puedo comparar dentro del activador. Sin embargo, para INSERTAR solo la tabla de inserción tiene valores. Como necesito todo esto en el mismo disparador, ¿cómo manejo ese caso INSERT?
Aquí está la secuencia de comandos del desencadenador que quiero 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