代码之家  ›  专栏  ›  技术社区  ›  JDC

使用单个自动增量列插入Oracle表

  •  0
  • JDC  · 技术社区  · 8 年前

    想象一下( 虚构的 )情况:

    您有一个只有一列的表 id 这是主键,通过使用典型的序列+触发器组合自动递增。


    当您必须为插入查询指定values关键字时,如何在那里创建新行?

    INSERT INTO table () VALUES () 据我所知是无效的。


    收件人:

    这不是关于这样一张桌子的意义的讨论!这纯粹是出于技术利益。

    2 回复  |  直到 8 年前
        1
  •  3
  •   a_horse_with_no_name    8 年前

    在任何当前Oracle版本(12.1、12.2、18)中,我都不会使用触发器,而是使用 identity 列-然后使用 default 插入期间的关键字:

    create table x (id integer generated by default as identity);
    insert into x (id) values (default);
    
        2
  •  2
  •   PKey    8 年前

    怎么样

    INSERT INTO theTable (id) VALUES (null);
    

    还有你的 插入前 触发器如下所示:

    if  :NEW.id is NULL Then  
       SELECT id_sequence.NEXTVAL INTO :NEW.id FROM dual; 
    end if;