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_OBJECTSSTATUS和触发器启用状态搞混——一个触发器可能编译完全有效(ALL_OBJECTS.STATUS = 'VALID'),但被手动禁用了(ALL_TRIGGERS.STATUS = 'DISABLED'),这俩状态是完全独立的哦。

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

火山引擎 最新活动