日期:2014-05-17  浏览次数:20458 次

Sqlserver多表添加相同触发器
如标题,我有多个表,结构都相同,都需要添加相同的触发器,有没有不单个定义,一劳永逸的方法??求虾们??
sqlserver

------解决方案--------------------
DML触发器是表级的,而且一次定义的话即使有,估计编写也超复杂,最起码表名方面你要全部写。我觉得如果结构完全相同,你插入数据的时候insert语句复制粘贴几次更好,不过最好封装成一个存储过程来实现
------解决方案--------------------
先设计一个函数,传入table name,然后可以帮你生成一个产生trigger的T-SQL语句。
再去批量生成吧。
------解决方案--------------------

create proc fc_test @tablename varchar(10)
as begin
declare @sql varchar(max)
if object_id(@tablename) is  null
return 
else
begin
set @sql='
create trigger tr_test
on ' +@tablename+'
after insert
as begin 
select 1
end'
exec(@sql)
end
end

这是我写的简单的,测试通过。