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

Insert Into Oracle Table with single, autoincrement Column

设想以下(虚构)情况:

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


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

据我了解,

INSERT INTO table () VALUES () 无效。


注意:

这里不是讨论这种table的感觉!纯属技术兴趣。

怎么样

INSERT INTO theTable (id) VALUES (null);

和你的 before insert 触发器就像:

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

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

create table x (id integer generated by default as identity);
insert into x (id) values (default);