我目前正在努力将数据从表转移到另一个表。但是,旧表有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-“值不足”*原因:*操作:
此代码确实起作用:
Insert into PROFFESION(PROFFESION_ID, PROFFESION)
Select seq_person.nextval, ( PROFESSION1 ||', '||PROFESSION2 ||', '||PROFESSION3) from NAMES;