CREATE OR REPLACE TRIGGER tr_trigger_test1
AFTER insert
ON trigger_test1
FOR EACH ROW
declare
begin
     insert into trigger_test2(id,pubtime,string,fid)
     values (trigger_test_q.nextval,sysdate,'asdf',:OLD.id);
end;如果trigger_test1表添加新纪录的时候,就触发tr_trigger_test1,之后将trigger_test1表的ID字段,写入trigger_test2表。
但是trigger_test2表的每个fid字段都是没有值的。SQL> select id,pubtime,fid from trigger_test2;
ID PUBTIME     FID
-- ----------- ---
 2 2008-5-23 1 
 4 2008-5-23 1 
 6 2008-5-23 1 
 8 2008-5-23 1                                                                           

解决方案 »

  1.   

    insert 触发器是没有OLD.id的,只有NEW.id
    UPDATE触发器才有OLD.id和NEW.id
      

  2.   

    那么我怎么获得insert进来的新纪录的id并记录到test2表呢?
      

  3.   

    比方说我想记录某个表的insert,update和delete的情况,记录到另一个表中,应该怎么做?
      

  4.   

    CREATE OR REPLACE TRIGGER tr_trigger_test1 
    AFTER insert 
    ON trigger_test1 
    FOR EACH ROW 
    declare 
    begin 
         insert into trigger_test2(id,pubtime,string,fid) 
         values (trigger_test_q.nextval,sysdate,'asdf',:NEW.id); 
    end; 
      

  5.   

    你这个触发器是针对insert的当然要用new.id,如果针对update就用OLD.ID