Я никогда не нашел реального использования для функции UPDATE
, так как она сообщает , был ли столбец подчинен UPDATE
(т. Е. Появился в предложении SET
), а не данные фактически изменились. Кроме того, конечно, триггеры срабатывают один раз за оператор, а не один раз за строку, поэтому ваш триггер может иметь дело со смесью строк, у у некоторых из которых изменилось FK2
, а у некоторых нет.
Обычно лучше использовать deleted
и сравнивать предыдущие / текущие значения:
CREATE TRIGGER [dbo].[Einsatzhistorie Wechsler]
ON [dbo].[FREE03]
AFTER INSERT,UPDATE
AS
SET NOCOUNT ON;
INSERT INTO FREE08
(
FK1,FK2,TEXT3,DATE1,TEXT2,DATE4
)
Select i.FK2,i.FK1,i.ID,i.DATE1,i.TEXT1,i.DATE11
From inserted i
left join deleted d
on
i.ID = d.ID and
i.FK2 = d.FK2
where d.ID is null
Здесь я предположил, а) что ID
представляет неизменный первичный ключ для таблицы, и б) что FK2
не может быть обнуляемым.