触发器中可能会用到两种值,一种是修改之前的值,一种是修改之后的值,所以才有new和old之分,当你想访问之前的值时要使用:old.colname来访问,同样,要访问修改之后的值要使用:new.colname来访问

解决方案 »

  1.   

    before insert 这个事件中的new,old分别是什么呢?、
    还有before update ,before delete,after 等等这些?
      

  2.   

    :new 和 :old是针对触发器中的行级触发来说的, 
    create or replace trigger trig_name
        after update on tablea
        for each row
    begin
        insert into tableb(id,logtext1,logtext2) values(1,:old.name:new.name); 
        ...
    end;更新tablea表中的记录时系统将在tableb中记录信息. 将tabla中被更新行的原name字段的值和更新后的新name字段的值记录到表tableb中. (只是举例)
      

  3.   

    --更正,少了一逗号/
    insert into tableb(id,logtext1,logtext2) values(1,:old.name,:new.name);
      

  4.   

    old 和 new 对象都是应用在触发器上~old 表示旧数据,new 表示新数据
      

  5.   

    執行觸發器更改字段或列時,系統會生成對應的類似虛擬的字段或列,一個標記為OLD(修改前)一個標記為NEW(修改後),實際的最終值是NEW值,OLD值一般用來做比較
      

  6.   

    其它不多說了,就給個例子給你吧.create or replace trigger CCC_limit_Shop_Order
    before insert --or update of PRIORITY_CATEGORY,PROCESS_TYPE
    on shop_ord_tab for each rowbegin 
        /*
          Create by haiying.xian for Maggie.chen .2004/06/16
          當DOP令單發行時對應工單的優序分類自動=8700,處理類型=PDL.
        */
      
        if inserting then 
           if :new.rowstate ='Planned' and :new.demand_code='DOP' then  
              :new.PRIORITY_CATEGORY :='8700';
              :new.PROCESS_TYPE :='PDL';
              
              --Modify by haiying.xian for Maggie.chen .2004/06/28
              --把工單位排程方向改成順排程(F)
              --set 最早開始日=開始日
              --set 需求日=完成日
              
              :new.SCHED_DIRECTION :='F';
              
              --:new.EARLIEST_START_DATE := :new.REVISED_START_DATE;
             -- :new.NEED_DATE := :new.REVISED_DUE_DATE;
              
           end if;
        end if ;
       
    end;