使用单个自动增量列插入 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);
设想以下(虚构)情况:
您有一个 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);