Хорошо, возможно, я был немного несправедлив, оставив эту часть в качестве "упражнения" в предыдущем вопросе.
Это будет работать для таблиц с одним столбцом PK. Возможно, было бы проще начать с них, а затем вернуться назад и вручную настроить их с помощью составного ПК.
select 'create trigger updated_'+s.name + '_' + t.name + ' on ' + quotename(s.name) + '.' + quotename(t.name)
+ ' after update as'
+ ' begin '
+ ' set nocount on; '
+ ' update t'
+ ' set [DateModified] = getdate()'
+ ' from inserted i'
+ ' inner join ' + quotename(s.name) + '.' + quotename(t.name) + ' t'
+ ' on i.' + quotename(c2.name) + ' = t.' + quotename(c2.name)
+ ' end'
from sys.columns c
inner join sys.tables t
on c.object_id = t.object_id
inner join sys.schemas s
on t.schema_id = s.schema_id
inner join sys.indexes i
on t.object_id = i.object_id
inner join sys.index_columns ic
on i.object_id = ic.object_id
and i.index_id = ic.index_id
inner join sys.columns c2
on ic.object_id = c2.object_id
and ic.index_id = c2.column_id
where c.name = 'DateModified'
and t.type = 'U'
and i.is_primary_key = 1