我有一些表,并通过从下面的另一个表中选择行来尝试加载数据。
insert into emp2(eid,ename,sal,my_seq_num) select eid,ename,sal from emp1;
当我执行上面的查询时,我收到的错误是“没有足够的值”因为我只选择了三行但插入包含4列。所以我的问题是如何自动插入序列号(就像我们写SYSDATE写入日期栏)。
答案 0 :(得分:0)
insert into emp2(eid,ename,sal,my_seq_num)
select eid,ename,sal,sequence_name.nextval
from emp1;
答案 1 :(得分:0)
插入emp2(eid,ename,sal,my_seq_num)选择eid,ename,sal,提及你的 来自emp1的序列名称;
例如: - 插入emp2(eid,ename,sal,my_seq_num)从emp1中选择eid,ename,sal,my_seq_num.nextval;
答案 2 :(得分:0)
首先,您需要创建一个SEQUENCE对象
CREATE SEQUENCE sequence_name
MINVALUE value
MAXVALUE value
START WITH value
INCREMENT BY value
CACHE value;
在你的情况下:
CREATE SEQUENCE my_sequence
MINVALUE 1
START WITH 1
INCREMENT BY 1
CACHE 20;
然后,您可以使用nextval
获取序列中的下一个数字,例如:
SELECT my_sequence.NEXTVAL FROM DUAL
在INSERT
:
insert into emp2(eid,ename,sal,my_seq_num)
select eid,ename,sal,my_sequence.NEXTVAL from emp1;
祝你好运!