数据文件的1条记录:
inA_1,inA_2,inA1_1,inA1_2,inA2_1,inA2_2其中:inA_1,inA2插入主表A,同时生成记录号A_ID(触发序列生成器),
inA1_1,inA1_2;inA2_1,inA2_2分别插入附表A1、A2,怎么能把主表的A_ID带过来?形式如下:主表A:   A_ID   inA_1   inA_2附表A1:  A_ID   inA1_1  inA1_2附表A2:  A_ID   inA2_1  inA2_2

解决方案 »

  1.   

    建立针对主表A的触发器,就可以把A_ID插入到附表A1、A2了
      

  2.   

    rolandzhang() :
    主表A的触发器好象不能得到inA1_1,inA1_2,inA2_1,inA2_2用针对A、A1、A2组成的视图的instead of触发器,应该可以达到目的
    我想知道SQLLOAD里有什么办法?
      

  3.   

    我觉得不用那么麻烦。可以先将文本中的数据导入到一个临时表中,tmpTab 包括:
    A_ID,inA_1,inA_2,inA1_1,inA1_2,inA2_1,inA2_2
    几个字段,A_ID的产生可以用触发器之类的方法。然后就可以用oracle的旋转插入了:
    Insert All
      Into A (A_ID,inA_1,inA_2) values(A_ID,inA_1,inA_2)
      Into A (A_ID,inA1_1,inA1_2) values(A_ID,inA1_1,inA1_2)
      Into A (A_ID,inA2_1,inA2_2) values(A_ID,inA2_1,inA2_2)
    select A_ID,inA_1,inA_2,inA1_1,inA1_2,inA2_1,inA2_2
    from tmpTab当然这样操作,如果数据量太多,tmpTab就会很大,用过后产生的垃圾数据比较多,不过可以把tmpTab  drop  掉