В триггере у вас есть доступ к «вставленным» и «удаленным» системным таблицам.Эти таблицы содержат записи в таблице, которые были обновлены оператором, вызвавшим выполнение триггера.
Для триггера «ОБНОВЛЕНИЕ» таблица «вставлена» содержит записи, как будто они находятся в новом состоянии.«Удаленная» таблица содержит записи со старыми значениями.
Вам нужно будет использовать эти 2 таблицы, чтобы узнать, какие записи действительно изменились, и обновить ModificationDate для этих записей.
Я думаю, что выражение внутри триггера будет выглядеть примерно так.(Я не проверял это)
UPDATE myTable
SET ModificationDate = getdate()
FROM inserted, deleted
WHERE inserted.EmployeeId = deleted.EmployeeId
AND (inserted.Name <> deleted.Name OR inserted.Address <> deleted.Address)
Редактировать: я немного поиграл:
create trigger upd_employee on [employee] after update
as
begin
update employee
set modifdate = getdate()
where employee.empid in
( select i.empid
from inserted i
inner join deleted d on i.empid = d.empid
where (i.name <> d.name or i.address <> d.address )
)
end
insert into employee
values
(1, 'Frederik' , '', null)
insert into employee
values
(2, 'User', '', null)
update employee
set [address] = 'some address'
select * from employee
update employee set [name] = 'test' where empid = 2
select * from employee
update employee set [name] = 'test' where empid = 2
select * from employee