Вам нужен только один триггер
CREATE TRIGGER [ProductAfter] ON [Product] AFTER INSERT, UPDATE, DELETE
Вы можете определить, какой оператор DML сработает, на основе числа записей в таблицах inserted
и deleted
, доступных в теле триггера.Для INSERT
, deleted
пусто, для DELETE
, inserted
пусто, для UPDATE
оба inserted
и deleted
не пусты.Например,
IF @@ROWCOUNT = 0 -- exit trigger when zero records affected
BEGIN
RETURN;
END;
DECLARE @type CHAR(1);-- 'U' for update, 'D' for delete, 'I' for insert
IF EXISTS(SELECT * FROM inserted)
BEGIN
IF EXISTS(SELECT * FROM deleted)
BEGIN
SET @type ='U';
END
ELSE
BEGIN
SET @type ='I';
END
END
ELSE
BEGIN
SET @type = 'D';
END;
Также обратите внимание на Отслеживание изменений данных , есть еще одна опция для отслеживания изменений без триггеров.