首页 > 解决方案 > 在 oracle 数据库中,我们如何同时在两个表上维护相同的代理键(序列值)

问题描述

在我们的数据仓库中,我们需要加载 2 个粒度相同的表。两张表中的音量完全相同。在插入过程中,我需要同时加载相同的代理键(序列)。有没有办法实现这一目标?

标签: sqloraclesequence

解决方案


关于您的 ETL 流程有太多未知数,所以如果这太离谱了,我深表歉意。不过评论太长了。

INSERT ALL您可以使用该命令同时插入多个表。像这样:

create sequence matt_s;
create table etl1 ( id number, other_data VARCHAR2(30));
create table etl2 ( id number, other_data VARCHAR2(30));

insert all 
  into etl1 (id, other_data) values ( matt_s.nextval, other_data )
  into etl2 (id, other_data) values ( matt_s.nextval, other_data )
select /* dummy source data */ 
       to_char(rownum) other_data
from   dual src
connect by rownum <= 50;

源查询中的每一行都将插入到两个表中,并共享该id列的公共值。


推荐阅读