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

简介: 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';

但是报错,

我始终在我的plsql中查询不到我触发器,检查对应的oms_order表,表上确实是有触发器的.

切换用户后, 即可能看到自己的触发器, 如下图

点击编辑,就可以在右边窗口下面看到相应的错误,  或者再次执行一下脚本, 错误出现的地方会有黄色光标行停留

最终  根据错误提示,检查确实是在ELSIF 的表达式后少了一个结尾的 then 关键字, 加上后,再次进行编译,没有任何错误提示, 测试效果也是ok .


相关文章
|
2月前
|
数据采集 数据挖掘 数据管理
如何发现和解决无效数据?
如何发现和解决无效数据?
30 2
|
5月前
|
Oracle 关系型数据库
ORA-22859 无效的列修改
ORA-22859 无效的列修改
112 0
|
Oracle 关系型数据库 数据库
oracle数据库imp导入失败提示:“不是有效的导出文件, 标头验证失败”解决方法,修改dmp文件里oracle数据库版本号方法
oracle数据库imp导入失败提示:“不是有效的导出文件, 标头验证失败”解决方法,修改dmp文件里oracle数据库版本号方法
1135 0
oracle数据库imp导入失败提示:“不是有效的导出文件, 标头验证失败”解决方法,修改dmp文件里oracle数据库版本号方法
|
SQL Oracle 关系型数据库
Oracle 无效对象查询,编译无效对象
编译无效对象 有两种方式: 1、执行sql查询结果 2、脚本编译