如何获取没有任何活动触发器的表列表?

时间:2013-06-06 18:18:42

标签: sql sql-server sql-server-2008-r2 triggers

我在SQL Server 2008中有数据库,几乎每个表都有触发器。我需要检查没有主动触发器的表格 如何获取没有任何活动触发器的所有表的列表(没有任何触发器的表或那些禁用所有触发器的表)?

1 个答案:

答案 0 :(得分:5)

您可以在sys.tablessys.triggers之间进行反半连接。

e.g。与NOT IN

SELECT *
FROM   sys.tables
WHERE  object_id NOT IN (SELECT parent_id
                         FROM   sys.triggers
                         WHERE  is_disabled = 0)

NOT EXISTS

SELECT *
FROM   sys.tables t
WHERE  NOT EXISTS (SELECT *
                   FROM   sys.triggers tr
                   WHERE  is_disabled = 0
                          AND tr.parent_id = t.object_id) 

sys.tables.object_idsys.triggers.parent_id都不可为空,在这种情况下,两者均为the same semantics and plan