确定表是不是受任何触发器影响
Posted
技术标签:
【中文标题】确定表是不是受任何触发器影响【英文标题】:Determine if a table is affected by any trigger确定表是否受任何触发器影响 【发布时间】:2011-09-21 10:47:23 【问题描述】:有没有办法确定任何给定表上的触发器是否影响另一个特定表?
我的实际问题是从表中删除行,我相信它是从另一个表上的触发器中发生的。我需要找到这个“其他表”(有几百个表)。
提前谢谢!
问候 /Snedker
【问题讨论】:
请说明 RDBMS 和版本。 对不起 - 这是 MSSQL 2008 R2,所以你的其他帖子对我来说很顺利!问候 /Snedker 【参考方案1】:你可以使用
SELECT def,
t.*
FROM sys.triggers t
CROSS APPLY (SELECT OBJECT_DEFINITION(object_id)) C(def)
WHERE def LIKE '%DELETE%' AND def LIKE '%your_table%'
如果没有找到任何内容,并且您想扩大可以使用的搜索范围
SELECT *
FROM sys.sql_modules
WHERE definition LIKE '%DELETE%' AND definition LIKE '%your_table%'
如果这仍然不起作用,并且您认为查询可能是由应用程序发送的,您可以按照my answer here 使用扩展事件来查明真相。
【讨论】:
非常感谢 - 正是我想要的!以上是关于确定表是不是受任何触发器影响的主要内容,如果未能解决你的问题,请参考以下文章