exception 
   when others then 
   dbms_output.put_line(sqlerrm);
   --you can also insert the sqlerrm into your error_log_table
end your_trigger;

解决方案 »

  1.   

    CREATE TRIGGER FOXXZ1.EMPWDTRIGGER1 AFTER INSERT 
    ON FOXXZ1.EMPWD
    FOR EACH ROW 
    BEGIN
    update empwd set emp_nam=
      (select foxmold.bsempms.emp_nam 
       from empwd,foxmold.bsempms 
       where foxmold.bsempms.emp_no=:new.emp_no
             and empwd.emp_no=:new.emp_no)
    where emp_no=:new.emp_no;
    END;
      

  2.   

    行级触发器体中的S Q L语句不能进行下列操作:
    • 读或修改触发语句的任何变异表,其中包括触发表本身。
    • 读或修改触发表的约束表中的主关键字,唯一关键字和外部关键字列。除此之外的其他列
    可以修改。解决方法是建两个触发器,一个语句级的一个行级的,在行级记录新旧值,在语句级进行修改
      

  3.   

    create procedure pro(p_emp_no in varchar2)
    as
    begin
    update empwd set emp_nam=
      (select foxmold.bsempms.emp_nam 
       from empwd,foxmold.bsempms 
       where foxmold.bsempms.emp_no=p_emp_no
             and empwd.emp_no=p_emp_no)
    where emp_no=p_emp_no;
    end;
    /
    CREATE TRIGGER FOXXZ1.EMPWDTRIGGER1 AFTER INSERT 
    ON FOXXZ1.EMPWD
    FOR EACH ROW 
    BEGIN
    pro(:new.emp_no);
    end;
    /
      

  4.   

    还是不行,出现ora-04091和ora-06512的错误提示
      

  5.   

    借个地问一下:为什么我在SQL*PLUS上输入的触发器的语句后,还是提示输入啊?情况如下:
    SQL> CREATE OR REPLACE TRIGGER t_actorAffair_DOCISSUE_BIR_T     BEFORE INSERT ON
     t_actorAffair FOR EACH ROW
      2  as
      3  BEGIN
      4     SELECT t_actorAffair_DOCISSUE_S.NEXTVAL INTO :NEW.ID FROM DUAL;
      5  END;
      6怎么不执行?怪