这个是记录触发器   记录表dz_hyzl所修改过得所有修改记录
请问怎么能实现循环   好多重复得IF判断和insert 操作create or replace trigger tri_DZ_HYZL_update
  before update on dz_hyzl  
  for each row
declare
  mdm varchar(30) := '005003';
begin
  if :new.kmno != :old.kmno then
    insert into modihis values(:new.bmdm,mdm,'kmno',:old.kmno,:new.kmno,sysdate,:new.xgry,:new.kmid);
  end if;
  
  if :new.name != :old.name then
    insert into modihis values(:new.bmdm,mdm,'name',:old.name,:new.name,sysdate,:new.xgry,:new.kmid);
  end if;  
   
  .........end tri_DZ_HYZL_update;

解决方案 »

  1.   

    if updating('kmno') then 
        insert into modihis values(:new.bmdm,mdm,'kmno',:old.kmno,:new.kmno,sysdate,:new.xgry,:new.kmid); 
    end if;
      

  2.   

    dz_hyzl所有的字段类型相同的吗。如果不是要转化为同一类型。
    你要插入到modihis表中。
      

  3.   

    dz_hyzl  不管主建
    modihis 没有主键
      

  4.   

    create or replace trigger tri_DZ_HYZL_update
      before update on dz_hyzl 
      for each row
    declare
      mdm varchar(30) := '005003';
    begin
      if updating('kmno') then 
        insert into modihis values(:new.bmdm,mdm,'kmno',:old.kmno,:new.kmno,sysdate,:new.xgry,:new.kmid); 
    end if;
     
      if updating('name') then 
        insert into modihis values(:new.bmdm,mdm,'name',:old.name,:new.name,sysdate,:new.xgry,:new.kmid);
      end if; 
      ...
    end tri_DZ_HYZL_update;
    你再把其他字段都写一遍,就OK了
      

  5.   

    我是想要用循环替换重复得if updating('name') then 
        insert into modihis values(:new.bmdm,mdm,'name',:old.name,:new.name,sysdate,:new.xgry,:new.kmid);
      end if; 这段if判断插入