一次将一条记录插入表中的多个表

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移动到上面定义的关系结构.

任何帮助将受到高度赞赏?

谢谢

Gar*_*ers 7

在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