Sql server 如何确定哪个操作触发了处理多个事件的触发器
我有一个记录DDL更改的数据库触发器。它的格式如下Sql server 如何确定哪个操作触发了处理多个事件的触发器,sql-server,sql-server-2008,tsql,ddl-trigger,Sql Server,Sql Server 2008,Tsql,Ddl Trigger,我有一个记录DDL更改的数据库触发器。它的格式如下 CREATE TRIGGER [Log_DDL_Changes] ON DATABASE FOR CREATE_TABLE, ALTER_TABLE, DROP_TABLE, CREATE_INDEX, ALTER_INDEX, DROP_INDEX, CREATE_PROCEDURE, ALTER_PROCEDURE, DROP_PROCEDURE, CREATE_VIEW, ALTER_VIEW, DROP_VIEW, CREATE
CREATE TRIGGER [Log_DDL_Changes]
ON DATABASE
FOR
CREATE_TABLE, ALTER_TABLE, DROP_TABLE,
CREATE_INDEX, ALTER_INDEX, DROP_INDEX,
CREATE_PROCEDURE, ALTER_PROCEDURE, DROP_PROCEDURE,
CREATE_VIEW, ALTER_VIEW, DROP_VIEW,
CREATE_FUNCTION, ALTER_FUNCTION, DROP_FUNCTION, RENAME
--Fires only for CREATE / ALTER / DROP Table and PROCs
AS
BEGIN
.
.
.
END
我想在创建或更改表、视图或索引时添加特殊处理
对于处理多个事件的触发器,如何确定哪个事件触发了触发器?在触发器中使用类似的内容:
SELECT EVENTDATA().value('(/EVENT_INSTANCE/EventType)[1]','nvarchar(max)')
谢谢你的回复。虽然这可能有效,但我认为有一种比解析SQL命令更好的方法。我觉得我应该能够键入FOR子句中出现的事件名称。如果有必要的话,我会尽快将我的触发器分解成不同的触发器,这样我就可以知道是什么事件让我这么做的execute@ChadD这就是为什么我说“像这样的东西”。有很多选项,但我已经将其更改为更能反映您的评论偏好。啊,我现在看到了您的编辑。这正是我想要的。泰!