【发布时间】:2014-08-06 09:13:07
【问题描述】:
我正在我的数据库上实施一个审计系统。它使用每个表上的触发器来记录更改。 我需要对这些触发器进行修改,因此要为每个触发器生成 ALTER 脚本。 我想做的只是改变这些触发器,如果它们存在的话,最好是这样:
IF EXISTS (SELECT * FROM sysobjects WHERE type = 'TR' AND name = 'MyTable_Audit_Update')
BEGIN
ALTER TRIGGER [dbo].[MyTable_Audit_Update] ON [dbo].[MyTable]
AFTER Update
...
END
但是,当我这样做时,我收到一条错误消息“关键字 TRIGGER 附近的语法无效”
这些触发器可能不存在的原因是可以在最终用户可以指定的表上启用/禁用审计。这涉及创建或删除触发器。我无法在创建触发器时对它们进行更改,因为它们是动态创建的,因此我仍然必须提供一种在触发器存在时更改它们的方法。
【问题讨论】:
-
尝试在
BEGIN和ALTER行之间添加GO。 -
谢谢,但这给出了一个错误,说它找不到触发器。
标签: sql sql-server triggers