/* 创建序列   */
create or replace sequence seq_dic_negative_id
increment by 1 --每次增加1
start with 1353 --从1开始计数
nomaxvalue --不设置最大值
nocycle --一直累加 不循环
nocache --不设置缓存  设置缓存 容易跳号 不连贯/* 创建触发器 */
create or replace trigger chufaqi
before insert on dic_negative
for each row 
begin
select seq_dic_negative_id.nextval into :new.id from dual;
end chufaqi
insert into dic_negative (type,rule,re) values(4002,'杀人','');当执行insert  语句的时候就会出现 ORA-04098 触发器无效且未通过重新验证问题
 大虾  帮我找找原因 那地方写错了   谢谢系诶系诶下。

解决方案 »

  1.   

    重新编译一下触发器,看看有什么错误?
    SQL>alter trigger lob_trigger compile;
    SQL>show errors;
      

  2.   


    --检查触发器是否有效
    SQL> select trigger_name,trigger_type,status
      2  from user_triggers
      3  /
     
    TRIGGER_NAME                   TRIGGER_TYPE     STATUS
    ------------------------------ ---------------- --------
    TRI_PRICE_CHANGE               BEFORE EACH ROW  ENABLED
    TRI_INSERT_SALES               AFTER EACH ROW   ENABLED
    --若无效:
    alter trigger trigger_name enabled
      

  3.   

    执行触发器之前它会先验证表的约束条件,如果id是主键的话,为空,它就不会通过验证,并且不会执行触发器,
    insert into dic_negative (id,type,rule,re) values(50,4002,'杀人','');
    你再试试。