Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 如何确定哪个操作触发了处理多个事件的触发器_Sql Server_Sql Server 2008_Tsql_Ddl Trigger - Fatal编程技术网

Sql server 如何确定哪个操作触发了处理多个事件的触发器

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

我有一个记录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_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这就是为什么我说“像这样的东西”。有很多选项,但我已经将其更改为更能反映您的评论偏好。啊,我现在看到了您的编辑。这正是我想要的。泰!