You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Oracle 12c中如何检查指定触发器的启用/禁用状态?

如何在Oracle 12c中检查触发器的启用/禁用状态

嘿,我之前也碰到过这个坑!你说得太对了,ALL_OBJECTS里的STATUS只能告诉你触发器的编译是否有效(VALID/INVALID),完全没法反映它的启用或禁用状态。要搞定这个,得用Oracle专门为触发器准备的视图:

  • 用ALL_TRIGGERS视图精准查询状态
    这个视图里的STATUS字段就是专门标记触发器启用/禁用状态的,取值只有ENABLED或者DISABLED。直接跑下面的SQL就能得到你要的结果:

    SELECT TRIGGER_NAME, STATUS
    FROM ALL_TRIGGERS
    WHERE TRIGGER_NAME = 'THE_TRIGGER_NAME';
    

    小提醒:Oracle默认会把对象名转成大写存储,要是你创建触发器时用双引号指定了大小写敏感的名称,那查询时也得带上双引号,比如WHERE TRIGGER_NAME = "MySpecialTrigger"。

  • 查当前用户的触发器?用USER_TRIGGERS更省心
    如果你要查的是当前登录用户名下的触发器,USER_TRIGGERS视图不需要额外权限,用起来更顺畅:

    SELECT TRIGGER_NAME, STATUS
    FROM USER_TRIGGERS
    WHERE TRIGGER_NAME = 'THE_TRIGGER_NAME';
    

最后补个小知识点:别把ALL_OBJECTS的STATUS和触发器启用状态搞混——一个触发器可能编译完全有效(ALL_OBJECTS.STATUS = 'VALID'),但被手动禁用了(ALL_TRIGGERS.STATUS = 'DISABLED'),这俩状态是完全独立的哦。

内容的提问来源于stack exchange,提问作者Rushikumar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 06:55:31