PRODUCT1表:
CREATE TABLE PRODUCT1(PRD_ID INTEGER , PRD_NAME VARCHAR2(10) );
PRODUCT2表:
CREATE TABLE PRODUCT2(PRD_ID INTEGER , PRD_NAME VARCHAR2(10) );
产品序列:
CREATE SEQUENCE PRODUCT_SEQ START WITH 100;
假设我在PRODUCT1和PRODUCT2中已有少量记录(少于100个)。
我正在使用上面的表和序列尝试以下查询:
INSERT INTO PRODUCT2 (PRODUCT_SEQ.NEXTVAL, PRD_NAME) SELECT PRD_NAME FROM PRODUCT1 ;
错误报告:SQL错误:ORA-00947:值不够
实际上,我已经通过以下帖子解决了我的问题:
select from one table, insert into another table oracle sql query
但不幸的是,那篇文章并没有完全帮助我。
如果您需要我方提供更多详细信息,请告诉我,以便我能提供。
答案 0 :(得分:1)
序列为数字100,102,103 ......因此您可以在id
列中插入这些数字
INSERT INTO PRODUCT2
(PRD_ID, PRD_NAME)
SELECT PRODUCT_SEQ.NEXTVAL , PRD_NAME FROM PRODUCT1 ;
顺便说一下,我建议您修改列ID的结构,如果您将其设为ID number(4)
,这是一个很好的做法,因为您的数字以100开头
答案 1 :(得分:0)
您的insert
语句应该在表中包含列名。然后,您应该从适当的序列和表中选择值。
INSERT INTO PRODUCT2 (PRD_ID, PRD_NAME)
SELECT PRODUCT_SEQ.NEXTVAL, PRD_NAME FROM PRODUCT1