精华内容
下载资源
问答
  • 2021-05-06 07:16:34

    在使用Oracle触发器时,先通过自建两个表作为测试的表,目的时让这两个表进行行数据同步,当增删改一个表当数据时,会同步修改另一个表当数据。

    当对自己项目中实际使用的表创建触发器进行数据同步时,发现PL/SQL的左侧窗口的Objects窗口中,Triggers下自己创建的触发器左上角有个小红叉号,右键执行Recompile时会报重新编译出错:compiled but with compilation errors。

    通过PL/SQL的Command Window进行排查错误,先执行一次编译:

    SQL> alter trigger R1_Project_To_Ess_Project(触发器名字) compile;

    输出的错误为:

    Warning: Trigger altered with compilation errors

    SQL> show error

    Errors for TRIGGER R1_Project_To_Ess_Project:

    LINE/COL ERROR

    ——– ————————————————————

    33/3 PL/SQL:ORA-00904: “CREATETIME”: 标识符无效

    7/5 PL/SQL:SQL Statement ignored

    128/33 PL/SQL:ORA-00904: “CREATETIME”: 标识符无效

    102/5 PL/SQL:SQL Statement ignored

    由错误我发现,被插入数据的那张表中不存在“CREATETIME”这个字段,把这几个不存在的字段在创建触发器的语句中删除,再编译后就能正常同步两个表的数据了。

    更多相关内容
  • 第一次接触触发器就出问题了 搞了两个小时~~ -- 通过触发器实现身份证不能更改 create trigger modify_ry before update on T_RY_JBXX begin if update(SFZ) then raise_application_error(-20002,'该表不允许修改...
  • 插入数据的时候提示ora-04098:触发器无效且未通过重新验证 解决方法: 首先根据错误提示: 在Triggers中 找到对应的触发器 选择提示错误的触发器 右键–》查看 可以在其程序窗口中看到其提示的错误 比如: 1 PL/SQL...

    插入数据的时候提示ora-04098:触发器无效且未通过重新验证

    解决方法:
    首先根据错误提示:
    在Triggers中 找到对应的触发器
    在这里插入图片描述
    选择提示错误的触发器 右键–》查看
    可以在其程序窗口中看到其提示的错误
    比如:
    1 PL/SQL:ORA-00904:“YWSJ”;标识符无效
    1 PL/SQL:SQL Statement ignored

    首先查看 触发器写的create语句中,是否插入和被插入表都写了“YWSJ”字段
    如果触发器的语句中 两边都有则 去查看被插入的表 和 插入的表结构是否都有“YWSJ”字段

    在没有该结构的表中 添加该字段结构
    然后在Triggers中 找到对应的触发器 右键–》重新编译一下即可。

    这样就可以顺利执行插入语句啦!!

    //类比思考错误:(其他的错误也可以这样排除)
    类似错误:提示对应的列值太小 实际值大
    如果插入的表和对应的表对应列大小是对的
    那就可以查看对应的触发器

    最后我的错误是因为触发器中 跟我要插入的表对应关系表中,对应的列值太小 将其改正
    重新执行就可以插入数据啦!

    展开全文
  • 解决 报错ora-04098: oracle trigger 触发器无效且未通过重新验证 在开发过程中 本人遇到以下报错信息: 1、 2、 [SQL]select TB_REPORT_KIND_id.Nextval into:new.KIND_ID from dual [Err] ORA-01008: not all ...

    解决 报错ora-04098: oracle trigger 触发器无效且未通过重新验证

    在开发过程中 本人遇到以下报错信息:

    1、
    在这里插入图片描述

    2、
    [SQL]select TB_REPORT_KIND_id.Nextval into:new.KIND_ID from dual
    [Err] ORA-01008: not all variables bound

    3、
    [Err] ORA-04098: trigger ‘YLDFXJK.TB_REPORT_TG_INSERTID’ is invalid and failed re-validation

    4、ORA-04098:触发器无效且未通过重新验证

    均是因为本人创建创建序列SQL问题 导致创建失败 :

    – 新建触发器 创建失败

    create or replace trigger TB_REPORT_KIND_tg_insertId
    before insert on TB_REPORT_KIND for each row 
    begin
    select TB_REPORT_KIND_id.Nextval into:new.id from dual;
    end;
    

    – 新建触发器 创建成功

    create or replace trigger TB_REPORT_KIND_tg_insertId
    before insert on TB_REPORT_KIND for each row 
    begin
    select TB_REPORT_KIND_id.Nextval into:new.KIND_id from dual;
    end;
    

    问题在于要对应到表主键上
    在这里插入图片描述

    主键自增 序列化参考网址:
    https://www.cnblogs.com/xiaostudy/p/10062491.html

    展开全文
  • 编写触发器逻辑: ...
    编写触发器逻辑:
    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 .
    展开全文
  • 关于oracle11g创建表自增主键触发器ora-04098:触发器无效且未通过重新验证问题 在plsql中:假如在网上直接ctrl c+ctrl v 到plsql中的sql窗口中会出现ora-04098:触发器无效且未通过重新验证问题,需要手敲一遍,千万...
  • 晚上闲来无事,学习了一下oracle的触发器,写了一个简单的触发器,更新dept表时,触发器输出对dept表更新的操作以及时间。 然后调试了一下触发器,见如下的操作。 恩恩,就这样吧,其他的也没接触到。
  • ![图片说明](https://img-ask.csdn.net/upload/201612/02/1480667945_232262.png) 求帮看看是什么问题!
  • 今天在做数据库运维,有一张xxx记录表,数据量有2亿多条,严重影响了查询...结果在运行项目时出问题了,日志显示:ora-04098:触发器 xxx.xxxxx 无效且未通过重新验证。直接在数据库中执行sql,也是报相同的错误。 ...
  • 在oracle客户端中“ora-04098:触发器无效且未通过重新验证”这个问题网上的解决方案很多,这里记录下JAVA代码创建触发器时踩的坑。 脚本中的代码: CREATE OR REPLACE TRIGGER "MY_TRIGGER" BEFORE ...
  • 目测, 你是在用 SQL Server 数据库的语法, 在 Oracle 上面写触发器啊......CREATE TABLE a ( objcode INT, objstate INT);CREATE TABLE b ( objcode INT, objstate INT);INSERT INTO a VALUES( 1, 100);INSERT ...
  • ORACLE触发器无效且未通过重新验证

    千次阅读 2017-08-07 18:29:36
    javax.servlet.ServletException: Hibernate operation: Could not ...注意:触发器建议手动输入,复制会出现全角空格 (偷懒的我卡在这里,哈哈) 此为学习过程中遇到的问题,值得分享,希望能帮到你。
  • 把脚本复制到Oracle Developer中运行,之后在前端运行时报错ORA-04098:触发器无效且未通过重新验证。然后开始排错,确认语法等无误后,手动将PD里sequence的脚本放到developer中运行,创建好sequence后,再把...
  • 满意答案逍遥qli推荐于 2017.10.08采纳率:51%等级:12... --3、创建触发器t_emp1SQL> create or replace trigger t_emp12 before update of sal on emp13 referencing old as o new as n4 for each row5 BEGIN6 ...
  • 发现触发器下有如下提示 通过右击编辑进入查看错误 对应相应的错误进行解决 如此问题解决 代码: create or replace trigger show_salary before delete or insert or update on customers for...
  • 公司系统需要,临时需要我写一个触发器, 我简单的记录了一下我的第一个触发器的编写过程. 第一步,找部分参考资料,看懂大概的逻辑 :http://blog.csdn.NET/qingzhongren/article/details/7969454 第二步,参照资料写...
  • create or replace trigger tigger_base after insert on yw_dsdf_dsf_base for each row begin if(:new.dsfjrbs insert into yw_dsdf_fz values(:new.dsfjrbs,:new.dsfjrmc,0,'0',500000,500000,0);...
  • 1.看提示是base库的触发器有问题了,所以先定位到这个触发器 SELECT * FROM DBA_OBJECTS WHERE OBJECT_TYPE='TRIGGER'and OBJECT_NAME =...2.通过pl/sql登录base库,查看触发器Triggers,找到ON_LOGON_TRIGGER ...
  • ORACLE 菜鸟,犯了一个低级错误,用...附上查看触发器状态的SQL语句: SELECT * FROM all_triggers where trigger_name = 'XXX' 或者: select * from all_source where type='TRIGGER' AND name='XXX'; 
  • 代码内容:创建触发器 create or replace trigger auid before insert on person for each row declare begin select s_person.nextval into :new.pid from dual; end; 创建表:create sequence s_...
  • 我创建触发器的语句: create or replace trigger TRIG_DAT_DD before insert on DAT_DD_TEMP for each row begin ...java.sql.SQLException: ORA-04098: 触发器 'ALMS.TRIG_DAT_DD' 无效且未通过重新验证 报这个错

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 20,864
精华内容 8,345
关键字:

触发器无效且未通过