Mam wyzwalacz tabeli na UPDATE i INSERT, który dodaje wiersz do innej tabeli. Wystarczy dodać wiersz, jeśli jedna z czterech kolumn zostanie zmieniona. Próbowałem użyć JEŻELI AKTUALIZACJI (kol.) Do testowania zmian, ale ma martwy punkt. Testuje tylko, że pojawiła się pewna wartość. Muszę wejść głębiej, muszę porównać stare i nowe wartości, aby zobaczyć prawdziwą zmianę. Musi współpracować zarówno z INSERT, jak i UPDATE.
W przypadku UPDATE jest to łatwe, ponieważ zarówno wstawione, jak i usunięte tabele mają wartości, które mogę porównać w ramach wyzwalacza. Jednak dla INSERT tylko tabela wstawiania ma wartości. Ponieważ potrzebuję tego wszystkiego w tym samym wyzwalaczu, jak poradzić sobie z tą sprawą INSERT?
Oto skrypt wyzwalacza, który chcę zmodyfikować:
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