如何检查触发器是否无效?

时间:2020-03-06 14:35:52  来源:igfitidea点击:

我正在使用通过一些晦涩的工具自动生成移动表的数据库。顺便说一下,我们必须通过一些触发器来跟踪表中的信息更改。当然,例如,通过删除列或者更改其类型,表结构中的某些更改会破坏某些触发器。

因此,问题是:有没有一种方法可以查询Oracle元数据以检查是否有某些触发器被破坏,以便将报告发送给支持团队?

user_triggers提供所有触发器,并告知它们是否启用,但不指示它们是否仍然有效。

解决方案

SELECT *
FROM   ALL_OBJECTS
WHERE  OBJECT_NAME = trigger_name
AND    OBJECT_TYPE = 'TRIGGER'
AND    STATUS <> 'VALID'

看一下SYS.OBJ $,特别是STATUS列。