多表导入自身数据问题有4个表TA、TB、TC、TD结构分别如下:SQL code表TATAIDTANAMESNO-----------------------
多表导入自身数据问题
有4个表TA、TB、TC、TD
结构分别如下:
- SQL code
表TATAID TANAME SNO--------------------------------1 省级1 0022 省级2 002......表TBTBID TAID TBNAME SNO-------------------------------1 1 市级1 0022 1 市级2 0023 2 市级3 002......表TCTCID TAID TBID TBNAME SNO-----------------------------------1 1 1 县级1 0022 1 2 县级2 0023 2 2 县级3 002......表TDTDID TAID TBID TCID TBNAME SNO---------------------------------------1 1 1 2 村级1 0022 1 2 2 村级2 0023 2 2 3 村级3 002......
聪明的您一定看出来了,这是逐级下分的表,每个表第一个字段是主键,添加数据时此值来自各自的序列值,现在问题是:
需要复制这四个表现有的数据在本表中,改动每个表的SNO字段值,如:002改为003,并将每个表的相应字段值改为对应新增记录的主键值,如表TA与TB新增记录后为:
- SQL code
表TATAID TANAME SNO--------------------------------1 省级1 0022 省级2 0023 省级1 0034 省级2 003......表TBTBID TAID TBNAME SNO-------------------------------1 1 市级1 0022 1 市级2 0023 2 市级3 0025 3 市级1 0036 3 市级2 0037 4 市级3 003......
其它表以此类推,数据量大,请高手指导,非常感谢
[解决办法]
insert /* +parallel */ into select
insert 里做动作,例如加并行,或者其它HINT提示
[解决办法]
可以考虑先进行更新步骤“并将每个表的相应字段值改为对应新增记录的主键值”;
再进行插入操作。
[解决办法]
insert into ...... returning into 变量
insert into 下级表 value( ...., 变量)
你的省的SNO是如何变化的?
