如何在Oracle Sql中自动插入序列号?

时间:2015-09-25 06:38:49

标签: oracle oracle11g oracle10g auto-increment

我有一些表,并通过从下面的另一个表中选择行来尝试加载数据。

insert into emp2(eid,ename,sal,my_seq_num) select eid,ename,sal from emp1;

当我执行上面的查询时,我收到的错误是“没有足够的值”因为我只选择了三行但插入包含4列。所以我的问题是如何自动插入序列号(就像我们写SYSDATE写入日期栏)。

3 个答案:

答案 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;

祝你好运!