1.  :new. 就是在你更改之后产生的
2.  call也可以。不call也可以。

解决方案 »

  1.   

    TRIGGER  编译错误错误:PLS-00103: 出现符号 "p_push"在需要下列之一时:
            := . ( @ % ;
           符号 ":=" 被替换为 "p_push" 后继续。
    行:21这个是什么错啊???
      

  2.   

    我自己写了2种  但是好像都不对 NO.1 create or replace trigger AupdateB 
      after update on a 
      for each row declare   ps_phone  varchar2(512); 
      ps_content varchar2(512); 
      ps_fsry    varchar2(512); 
      ps_ret    varchar2(512); begin 
      if updating then 
        ps_phone := :old.dx_phone; 
        ps_content := :new.dx_hfnr; 
        ps_fsry := :new.dx_hfr; 
        ps_ret := :new.dx_zxjg; 
        p_push@dblink_b(ps_phone, ps_content,ps_fsry,ps_ret); 
      end if; 
    end; 
    NO.2 create or replace trigger AupdateB 
      after update on a 
      for each row declare   ps_phone  varchar2(512); 
      ps_content varchar2(512); 
      ps_fsry    varchar2(512); 
      ps_ret    varchar2(512); begin 
      if updating then 
        select :old.dx_phone, :new.dx_hfnr, :new.dx_hfr, :new.dx_zxjg 
          into ps_phone, ps_content, ps_fsry, ps_ret 
          from a 
        where dx_id = :old.dx_id; 
        p_push@dblink_b(ps_phone, ps_content,ps_fsry,ps_ret); 
      end if; 
    end; 第一个执行程序没报错 但是好像没成功 
    第二个触发器 执行程序的时候  还要报错 
    java.sql.SQLException: ORA-04091: 表a发生了变化,触发器/函数不能读 
    ORA-06512: 在"AupdateB", line 10 
    ORA-04088: 触发器 'AupdateB执行过程中出错 
    求解! 谢谢