【问题标题】:How can I insert a sequence number automatically in Oracle Sql? [duplicate]如何在 Oracle Sql 中自动插入序列号? [复制]
【发布时间】:2015-12-22 22:26:26
【问题描述】:

我有一些表并尝试通过从另一个表中选择行来将数据加载到其中,如下所示。

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

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

【问题讨论】:

标签: oracle oracle11g oracle10g auto-increment


【解决方案1】:
insert into emp2(eid,ename,sal,my_seq_num) 
select eid,ename,sal,sequence_name.nextval 
from emp1;

【讨论】:

    【解决方案2】:

    insert into emp2(eid,ename,sal,my_seq_num) select eid,ename,sal,mention your emp1 中的序列名称;

    例如:- 插入emp2(eid,ename,sal,my_seq_num) select eid,ename,sal,my_seq_num.nextval from emp1;

    【讨论】:

      【解决方案3】:

      首先,您需要创建一个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;
      

      祝你好运!

      【讨论】:

      • 嗨@David Isla,非常感谢您的回复。我在这里还有两个疑问。1)创建序列是否适用于每个数据库(如 MySQL、SQL、SYBASE 等)? . 2)如何从 Java 程序创建这个序列?
      • SEQUENCE 是一个 Oracle 对象。您在其他 rdbms 中还有其他可能性,例如在 MySQL 中定义 Auto_increment 列等。关于从 Java 中创建,请考虑在 SEQUENCE 中类似于 TABLES,在设计时定义它。
      • SQL Server 也有 SEQUENCE 对象。阅读here
      猜你喜欢
      • 2015-06-29
      • 2021-12-03
      • 2014-09-09
      • 2016-05-13
      • 1970-01-01
      • 2012-12-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多