nic*_*App 3 mysql sql sql-server oracle
我有一个MAIN_TABLE平.我需要将此表中的记录插入多个表格.
例如.
MAIN_TABLE
col1, col2, col3, col4, col5
PARENT1_TABLE
PT1_ID(PK), col1,col2
PARENT2_TABLE
PT2_ID(PK), col3,col4
PARENT2_CHILD_TABLE
P2C_ID(PK), PT2_ID(FK), col5, col6
Run Code Online (Sandbox Code Playgroud)
等等.
目标是,我必须将记录从平面MAIN_TABLE移动到上面定义的关系结构.
任何帮助将受到高度赞赏?
谢谢
在Oracle中,您可以执行多表插入.创建一个虚拟错误记录表
create global temporary table err_dump
(ORA_ERR_NUMBER$ NUMBER,
ORA_ERR_MESG$ VARCHAR2(2000),
ORA_ERR_ROWID$ UROWID(4000),
ORA_ERR_OPTYP$ VARCHAR2(2),
ORA_ERR_TAG$ VARCHAR2(2000));
Run Code Online (Sandbox Code Playgroud)
然后为parent1添加一个唯一键(col1,col2),为parent2添加(col3,col4).使用多表插入加载到两个父表中.LOG ERRORS INTO子句意味着任何进入父表的重复项都将被删除.
INSERT ALL
INTO parent1_table (pt1_id, col1,col2)
VALUES (rn, col1,col2)
LOG ERRORS INTO err_dump REJECT LIMIT 99999999
INTO parent2_table (pt2_id, col3, col4)
VALUES (rn, col3, col4)
LOG ERRORS INTO err_dump REJECT LIMIT 99999999
SELECT rownum rn, col1, col2, col3, col4
FROM MAIN_TABLE;
Run Code Online (Sandbox Code Playgroud)
最后,从MAIN中选择,加入parent1_table和parent2_table以获取新的PK,这是一个简单的插入PARENT2_CHILD_TABLE
| 归档时间: |
|
| 查看次数: |
903 次 |
| 最近记录: |