У меня есть триггер таблицы на UPDATE и INSERT, который добавляет строку в другую таблицу. Нужно только добавить строку, если один из четырех столбцов изменился. Я попытался использовать IF UPDATE (col) для проверки изменений, но у него есть слепое пятно. Это только проверяет, что вошло какое-то значение. Мне нужно пойти глубже, мне нужно сравнить старые и новые значения, чтобы увидеть, произошло ли истинное изменение. Он должен работать как с INSERT, так и с UPDATE.
В случае ОБНОВЛЕНИЯ это просто, потому что и во вставленной, и в удаленной таблице есть значения, которые я могу сравнить в триггере. Однако для INSERT только таблица вставки имеет значения. Поскольку мне нужно все это в одном и том же триггере, как мне обработать этот случай INSERT?
Вот скрипт триггера, который я хочу изменить:
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