2013-11-28 56 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

相關問題