ora-04098 触发器无效且未通过重新验证

编写触发器逻辑:
CREATE OR REPLACE TRIGGER update_bms_ord_record 
       AFTER UPDATE OF status ON oms.oms_order
       FOR EACH ROW 
         BEGIN 
           CASE  
             WHEN UPDATING('status') THEN 
               IF :NEW.status='SIGN' THEN 
                   UPDATE bms_ord_record ord SET ord.Be_Sign=1,ord.sign_time=:OLD.ACTUAL_RECEIVE_TIME WHERE ord.relatebill1=:old.relatebill1;
               ELSIF :OLD.status='SIGN'
                   UPDATE bms_ord_record ord SET ord.Be_Sign=0,ord.sign_time=NULL WHERE ord.relatebill1=:OLD.relatebill1;
               END IF;
           END CASE;
         END;

 

写完上述逻辑后在sql窗口进行执行,未报任何异常;
第三步:测试
我写了一个update语句进行测试,
UPDATE oms_order o SET o.status='SIGN2' WHERE o.relatebill1='50010777';   

但是报错,

up-7f5c770ddc55781b99211a5363ac6fd16df.png
我始终在我的plsql中查询不到我触发器,检查对应的oms_order表,表上确实是有触发器的. 
up-113c343190c5be2d49af41d3b66f934033f.png
切换用户后, 即可能看到自己的触发器, 如下图
up-14327f70cf95b4eb0ac06053b3fa22ea454.png
点击编辑,就可以在右边窗口下面看到相应的错误,  或者再次执行一下脚本, 错误出现的地方会有黄色光标行停留
up-3fcc903b1379edfcf7615785625b727173b.png
最终  根据错误提示,检查确实是在ELSIF 的表达式后少了一个结尾的 then 关键字, 加上后,再次进行编译,没有任何错误提示, 测试效果也是ok .
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

讓丄帝愛伱

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值