我有两张桌子,我尝试将SECOND_TABLE
的行插入FIRST_TABLE
。
我创建了两个表:
CREATE TABLE FIRST_TABLE(
F_ID NUMBER(10) not null,
F_NAME VARCHAR(8 BYTE) not null,
F_DESCRIPTION NVARCHAR2(1000) not null
);
CREATE TABLE SECOND_TABLE(
S_ID NUMBER(10) not null,
S_NAME VARCHAR(8 BYTE) not null,
S_DESCRIPTION NVARCHAR2(1000) not null
);
我发现SECOND_TABLE
和FIRST_TABLE
之间存在差异:
select S_NAME,S_DESCRIPTION from SECOND_TABLE minus select F_NAME,F_DESCRIPTION from FIRST_TABLE;
我创建了一个声明:
insert into FIRST_TABLE F_ID,F_NAME,F_DESCRIPTION (select * from SECOND_TABLE where not exists (select * from FIRST_TABLE where SECOND_TABLE.S_NAME = FIRST_TABLE.F_NAME));
但是此声明副本F_ID
,我不知道如何将此声明更改为不复制F_ID
,而是从序列CSS_F
生成它。它应该看起来像:
insert into FIRST_TABLE (F_ID) values (CSS_F.nextval);
您能否告诉我如何在此声明中添加插入的genereted id?
答案 0 :(得分:2)
您可以从second_table中选择名称和描述列,并使用序列插入F_ID列。
insert into FIRST_TABLE (F_ID,F_NAME,F_DESCRIPTION)
select CSS_F.nextval, S_NAME, S_DESCRIPTION
from SECOND_TABLE S
where not exists (select * from FIRST_TABLE where S.S_NAME = F_NAME)