A.ID是自增ID, 往A表中插入一条数据会触发另一个表触发2,往B表添加条数据.请问怎么样在表触发2中修改新增记录的一个字段的值.因为ORACLE提示,无法获取A.ID的值. A.ID的自增触发在表触发2后? 

解决方案 »

  1.   

    create or replace trigger InsertMessage   
        after insert    
        on T_PLANS   
        referencing old as So 
                    new as Sn
                   
        for each row   
        declare Mb varchar(100);
                ic number;
    begin  
        if inserting then  
              if :Sn.P_READ = 0 then 
                INSERT INTO B (ID,TEXT) VALUES ( :Sn.ID, :Sn.TEXTID);
                 select SEQ_PLANS.nextval into ic from dual;
                 UPDATE A SET P_READ = 1 WHERE  ID= :SN.ID;  //:SN.ID 为A表中的自增ID
              end if;
      end if;   
    end;
      

  2.   

    create or replace trigger InsertMessage  
        after insert    
        on T_A 
        referencing old as So 
                    new as Sn 
                  
        for each row  
    begin  
        if inserting then  
              if :Sn.P_READ = 0 then 
                INSERT INTO B (ID,TEXT) VALUES ( :Sn.ID, :Sn.TEXTID);        
                UPDATE A SET P_READ = 1 WHERE  ID= :SN.ID;  //:SN.ID 为A表中的自增ID 
              end if; 
      end if;  
    end; 不好意思,上面那个有错误!
      

  3.   

    就是当我往B表后插入新数据后,根据自增ID 把A表的新数据中的P_READ值更新为1
      

  4.   

    before insert:Sn.P_READ := 1;
      

  5.   

    create or replace trigger InsertMessage  
        after insert    
        on T_PLANS  
        referencing old as So 
                    new as Sn 
                  
        for each row  
        declare Mb varchar(100); 
                ic number; 
    begin  
        if inserting then  
              if :Sn.P_READ = 0 then 
                INSERT INTO B (ID,TEXT) VALUES ( :Sn.ID, :Sn.TEXTID); 
                select SEQ_PLANS.nextval into ic from dual; 
                UPDATE A SET P_READ = 1 WHERE  ID= :SN.ID;  //:SN.ID 为A表中的自增ID 
              end if; 
      end if;  
    end;