2013-11-28 30 views
0

可以找出特定触发器的事件或事件组列表吗? 其实我需要一些查询来返回事件的列表(或表)。有没有办法获得SQL Server中的触发事件列表?

这个问题涉及到DML和DDL DB范围的触发器。

+0

通过事件,你的意思是否给定的触发器是用于/而不是插入/更新/删除? –

+0

@Fergus Bown,是的,对于DML触发器插入/更新/删除。和DDL - 事件:http://technet.microsoft.com/en-us/library/bb522542(v=sql.110).aspx,事件组:http://technet.microsoft.com/en-us/ library/bb510452(v = sql.105).aspx – kaa

+0

而且很好找出触发“时间”的查询 - FOR/AFTER/INSTEAD OF :)。对于像MySQL或Postgre这样的其他DBMS来说,这并不是什么大问题,但对于SQL Server来说并不明显。 – kaa

回答

1

这可能会帮助你..

SELECT SO.NAME 
    , SE.* 
FROM sys.trigger_events SE 
INNER JOIN sys.objects SO 
    ON SE.object_id = SO.object_id 

这个查询给出了数据库触发器的列表,它们的类型描述。 如果您需要某个特定触发器,请使用WHERE条件。

SELECT SO.NAME 
    , SE.* 
FROM sys.trigger_events SE 
INNER JOIN sys.objects SO 
    ON SE.object_id = SO.object_id 
WHERE SO.name = 'trigger_name' 
+1

该解决方案有效。但可能你的意思是INNER JOIN sys.triggers?因为对于sys.objects - 结果是空的(在DDL触发器上测试)。 – kaa

相关问题