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

Posted

技术标签:

【中文标题】如何检查触发器是不是无效?【英文标题】:How to check if a trigger is invalid?如何检查触发器是否无效? 【发布时间】:2010-09-12 08:43:18 【问题描述】:

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

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

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

【问题讨论】:

【参考方案1】:

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

【讨论】:

【参考方案2】:
SELECT *
FROM   ALL_OBJECTS
WHERE  OBJECT_NAME = trigger_name
AND    OBJECT_TYPE = 'TRIGGER'
AND    STATUS <> 'VALID'

【讨论】:

Select * from user_objects where satus != 'VALID'

以上是关于如何检查触发器是不是无效?的主要内容,如果未能解决你的问题,请参考以下文章

如何编写触发器来检查工资是不是超出工资的最小或最大范围pl-sql Oracle

检查删除是不是删除所有表值的触发器

检查用户是不是登录成功 Oracle

如何检查 Boot_Complete 是不是被触发

核心数据 - 如何在不触发错误的情况下检查对象关系是不是存在

检查 PESEL 仅为 11 位数字 - ORA-04073: 列列表无效