SQL 判断触发器不存在则执行创建触发器语句 怎么过不去 一直报错

if exists (select * from sysobjects where id=object_id(N'delpoints') and objectproperty(id,N'IsTrigger')=2)
begin
go
CREATE TRIGGER delpoints ON GHXH_Customer AFTER UPDATE AS BEGIN update GHXH_Customer set points = 0 where name like '%零售顾客%' END
end

create trigger语句必须单独放在一个查询里执行才可以,前边不能有任何其他语句。你在create trigger之前放了go我想就是为了让它在单独的查询中执行,但是exists就不起作用了,而且go之前的begin和最后的end是在两个批查询中,本身就不能配对,语法就有问题。exists用法也不对,应该是not exists,objectproperty用法也错了。


如果楼主想实现判断触发器不存在则创建,那么,创建触发器的语句就得放在动态语句里来执行了


if not exists (select * from sysobjects where id=object_id(N'delpoints') and objectproperty(object_id('delpoints'),N'IsTrigger')=1)
begin
    exec ('CREATE TRIGGER delpoints ON GHXH_Customer AFTER UPDATE AS BEGIN update GHXH_Customer set points = 0 where name like ''%零售顾客%'' END')
end

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-05-05
把等于改为等于1 这个是布尔型的 怎么会有2
触发器写的也有问题
相似回答