前面作出SQL脚本来创建一个表上的触发器时,我想检查之前,我创建它的触发器不存在。否则,该脚本不能多次运行。SQL:为什么一个CREATE TRIGGER需要通过GO
所以我添加了一个语句来首先检查触发器是否存在。添加该语句后,CREATE TRIGGER语句不再起作用。
IF NOT EXISTS (SELECT name FROM sysobjects
WHERE name = 'tr_MyTable1_INSERT' AND type = 'TR')
BEGIN
CREATE TRIGGER tr_MyTable1_INSERT
ON MyTable1
AFTER INSERT
AS
BEGIN
...
END
END
GO
这给:
Msg 156, Level 15, State 1, Line 5
Incorrect syntax near the keyword 'TRIGGER'.
的解决办法是删除现有触发器,然后创建新的一个:
IF EXISTS (SELECT name FROM sysobjects
WHERE name = 'tr_MyTable1_INSERT' AND type = 'TR')
DROP TRIGGER tr_MyTable1_INSERT
GO
CREATE TRIGGER tr_MyTable1_INSERT
ON MyTable1
AFTER INSERT
AS
BEGIN
...
END
GO
我的问题是:w hy是第一个失败的例子?检查触发器存在什么问题?
会下降呈现与创建相同的问题? – JeffO 2012-01-31 18:26:17