Sql 需要通用更新触发器的帮助吗
我正在使用SQL Server 2008,我想知道是否有一种方法可以编写一个通用的更新触发器,用于检查正在更新的表是否有一个名为“Last_updated”的字段,如果有,则使用getDate()函数更新该字段 我可以编写一个这样的通用触发器来处理数据库中的所有表吗Sql 需要通用更新触发器的帮助吗,sql,tsql,sql-server-2008,triggers,Sql,Tsql,Sql Server 2008,Triggers,我正在使用SQL Server 2008,我想知道是否有一种方法可以编写一个通用的更新触发器,用于检查正在更新的表是否有一个名为“Last_updated”的字段,如果有,则使用getDate()函数更新该字段 我可以编写一个这样的通用触发器来处理数据库中的所有表吗 谢谢你的时间 您可以在触发器中互操作schema_information.tables视图,并将触发器分配给所有表,但这是一种糟糕的做法。您最好编写一些代码生成器来为每个表执行此操作,而不是使用通用触发器。不,您需要为每个表都使用触
谢谢你的时间 您可以在触发器中互操作schema_information.tables视图,并将触发器分配给所有表,但这是一种糟糕的做法。您最好编写一些代码生成器来为每个表执行此操作,而不是使用通用触发器。不,您需要为每个表都使用触发器,或者在每次更新中包含
Last\u Updated=GETDATE
试试这个:
SELECT
'CREATE TRIGGER [tr_u_'+TABLE_SCHEMA+'_'+TABLE_NAME+'] ON ['+TABLE_SCHEMA+'].['+TABLE_NAME+']'
+'AFTER UPDATE AS '
+'UPDATE ['+TABLE_SCHEMA+'].['+TABLE_NAME+'] '
+' SET Last_Updated=GETDATE() '
+' FROM ['+TABLE_SCHEMA+'].['+TABLE_NAME+'] A '
+' INNER JOIN INSERTED i ON a.pk=i.pk '
FROM INFORMATION_SCHEMA.COLUMNS
WHERE COLUMN_NAME='LastChgDate' --'Last_Updated'
此查询将为具有上次更新的列的每个表生成Create Trigger
命令。您必须编辑每个命令并修复a.pk=i.pk
,使每个表成为正确的列。然后运行所有的命令,然后你就拥有了所有的触发器。在添加新表时,需要添加触发器