SQL AUTO_INCREMENT并将许多值插入一行

问题描述 投票:0回答:1

我目前正在努力将数据从表转移到另一个表。但是,旧表有3行,而我的新表有2行,但其中一个是ID PK。因此,我想从这3行中获取数据并将其插入PROFFESION表中。这里的问题是PROFFESION_ID。我对此并不陌生,任何帮助都将是有用的。下面是我当前的代码以及我尝试过的代码。

这是我要从中获取数据的表:

CREATE TABLE NAMES (
NAME_ID varchar(9),
NAME varchar(35),
PROFESSION1 varchar(255),
PROFESSION2 varchar(255),
PROFESSION3 varchar(30)
);

这也是将要在其中插入数据的新表:

CREATE TABLE PROFFESION( 
PROFFESION_ID INT NOT NULL PRIMARY KEY,
PROFFESION VARCHAR (30)
);

Insert into PROFFESION(PROFFESION_ID, PROFFESION)
Select  PROFESSION1 ||', '||PROFESSION2 ||', '||PROFESSION3 from NAMES;`

这里的问题是PROFFESION_ID,我想成为AUTO_INCREMENT,但是我尝试了不同的方法,但是例如它们都不起作用:

CREATE SEQUENCE seq_person
MINVALUE 1
START WITH 1
INCREMENT BY 1
CACHE 10;

这是带有seq_person的插入代码,但不起作用:

Insert into PROFFESION(PROFFESION_ID, PROFFESION)
Select seq_person.nextval ||', '|| PROFESSION1 ||', '||PROFESSION2 ||', '||PROFESSION3 from NAMES;

我运行该代码时的错误:

错误从第38行开始-插入PROFFESION(PROFFESION_ID,PROFFESION)选择seq_person.nextval ||','|| NAMES中的PROFESSION1 ||','|| PROFESSION2 ||','|| PROFESSION3命令行错误:38列:13错误报告-SQL错误:ORA-00947:值不足00947. 00000-“值不足”*原因:*操作:

oracle sql-insert
1个回答
0
投票

此代码确实起作用:

Insert into PROFFESION(PROFFESION_ID, PROFFESION) Select seq_person.nextval, ( PROFESSION1 ||', '||PROFESSION2 ||', '||PROFESSION3) from NAMES;

© www.soinside.com 2019 - 2024. All rights reserved.