有4个表TA、TB、TC、TD
结构分别如下:表TA
TAID          TANAME         SNO
--------------------------------
1             省级1          002
2             省级2          002
......
表TB
TBID   TAID       TBNAME    SNO
-------------------------------
1        1        市级1     002
2        1        市级2     002
3        2        市级3     002
......表TC
TCID   TAID   TBID    TBNAME   SNO
-----------------------------------
1        1     1       县级1   002
2        1     2       县级2   002
3        2     2       县级3   002
......
表TD
TDID   TAID   TBID  TCID  TBNAME   SNO
---------------------------------------
1        1     1     2    村级1    002
2        1     2     2    村级2    002
3        2     2     3    村级3    002
......
聪明的您一定看出来了,这是逐级下分的表,每个表第一个字段是主键,添加数据时此值来自各自的序列值,现在问题是:
需要复制这四个表现有的数据在本表中,改动每个表的SNO字段值,如:002改为003,并将每个表的相应字段值改为对应新增记录的主键值,如表TA与TB新增记录后为:表TA
TAID          TANAME         SNO
--------------------------------
1             省级1          002
2             省级2          0023             省级1          003
4             省级2          003......表TB
TBID   TAID       TBNAME    SNO
-------------------------------
1        1        市级1     002
2        1        市级2     002
3        2        市级3     0025        3        市级1     003
6        3        市级2     003
7        4        市级3     003
......其它表以此类推,数据量大,请高手指导,非常感谢

解决方案 »

  1.   

    insert /* +parallel */ into  select insert 里做动作,例如加并行,或者其它HINT提示
      

  2.   

    因为表的分级结构,还没有添加数据时没有得到下一级表相应字段的序列值,只能先插入再更新,问题还请高人指导,听说有个 returning 返回刚加记录的序列值,在这里怎么用啊?
      

  3.   

    insert into ...... returning into 变量insert into 下级表   value( ...., 变量)你的省的SNO是如何变化的?