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

SQL语句创建触发器
if not exists (select 1 from sysobjects where name=触发器名)
create trigger ......

这种写法为什么不行????

语法方面我有什么错误码?? 
SQL select

------解决方案--------------------
语法要求create trigger必须在一个TSQL执行批次的开头.

3楼写法的逻辑是,若存在则先删除,go语句之后再create trigger,执行没语法问题,且结果正确,不就OK了吗.

若是一定要按LZ思路的话,可以用动态SQL执行create trigger,但比较麻烦,如下.

if not exists(select 1 from sys.objects where type='TR' and name='[触发器名]')
begin
  declare @tsql varchar(6000)
  select @tsql='create trigger [触发器名] ...'
  exec(@tsql)
end