我正在处理由一些不起眼的工具自动生成移动表的数据库。顺便说一句,我们必须通过一些触发器跟踪表中的信息变化。当然,例如,通过删除列或更改其类型,表结构中的某些更改会破坏某些触发器。

所以,问题是:有没有办法查询Oracle元数据以检查是否有一些触发器被破坏,以便向支持团队发送报告?

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

有帮助吗?

解决方案

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

其他提示

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top