create trigger pqp_djfb_ins 
after insert on arap_djfb 
for each row
begin
update arap_djfb 
set zyx1=c.custshortname,zyx2=c.taxpayerid
where arap_djfb.ksbm_cl=bd_cumandoc.pk_cumandoc
and bd_cumandoc.pk_cubasdoc = bd_cubasdoc.pk_cubasdoc
and fb_oid=:new.fb_oid
end;

解决方案 »

  1.   

    create trigger pqp_djfb_ins 
    after insert on arap_djfb 
    for each row
    begin
    update arap_djfb 
    set (zyx1,zyx2)=
    (select c.custshortname,c.taxpayerid
       from arap_djfb a,bd_cumandoc b,bd_cubasdoc c
     where a.ksbm_cl=b.pk_cumandoc
     and b.pk_cubasdoc=c.pk_cubasdoc)
    where fb_oid=:new.fb_oid;
    end;
      

  2.   

    2.
    create trigger pqp_djfb_upd 
    after update of ksbm_cl on arap_djfb 
    for each row
    begin
    update arap_djfb 
    set (zyx1,zyx2)=
    (select c.custshortname,c.taxpayerid
       from arap_djfb a,bd_cumandoc b,bd_cubasdoc c
     where a.ksbm_cl=b.pk_cumandoc
     and b.pk_cubasdoc=c.pk_cubasdoc)
    where fb_oid=:new.fb_oid
    end;
      

  3.   

    create trigger pqp_djfb_ins after insert on arap_djfb for each rowbegin
    update arap_djfb 
             set zyx1=bd_cubasdoc.custshortname,zyx2=bd_cubasdoc.taxpayerid
             where inserted.ksbm_cl=bd_cumandoc .pk_cumandoc 
             and   bd_cumandoc .pk_cumandoc =bd_cubasdoc.pk_cubasdoc
    and   arap_djfb.fb_oid=inserted .fb_oid
    end
      

  4.   

    to zhaokeke2004(/ ***** 大力·I.A.M *****/):
        提交的时候提示要填写new变量。
    to  yujiabian(流氓兔子雨):
        提交的时候提示表或视图不存在象触发器中使用到的两个缓冲区:插入区(inserted)和删除区(deleted)在oracle中怎么称呼?
    因为时间急,没有太多时间去翻书,希望大侠们帮帮忙。或者提示一下小弟该看什么书快速搞定它。
      

  5.   

    new为新插入的数据或者更新的数据,old是更新前的数据或者删除的数据!可以直接调用!
      

  6.   

    create trigger pqp_djfb_upd 
    after update of ksbm_cl on arap_djfb 
    for each rowv_zxy1 varchar2(20);
    v_zyx2 varchar2(20);
    begin
            if :new.ksbm_cl<>:old.ksbm_cl then 
               在这里根据你的需要直接对:new.zxy1 ,和:new.zxy2进行更改,不能对本表再进行更新,因为此时表已经变异!
           end if;
    end;
      

  7.   

    create trigger pqp_djfb_upd 
    after update of ksbm_cl on arap_djfb 
    for each rowv_zxy1 varchar2(20);
    v_zyx2 varchar2(20);
    begin
            if :new.ksbm_cl<>:old.ksbm_cl then 
              select c.custshortname,c.taxpayerid into v_zyx1,v_zyx2 from bd_cumandoc b,bd_cubasdoc c 
       where b.pk_cumandoc=:new.ksbm_cl  and b.pk_cubasdoc=c.pk_cubasdoc;
      :new.zyx1:=v_zyx1;
      :new.zyx2:=v_zyx2;
           end if;
    end;
      

  8.   

    把new前的:号去掉就成功了
    谢谢各位
    结帐