如何正确设置 GENERATED BY DEFAULT AS IDENTITY 后的顺序

问题描述 投票:0回答:1

我有一个使用较新的

GENERATED BY DEFAULT AS IDENTITY
功能的主键序列表:

CREATE TABLE test (
    id INT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
    data VARCHAR
);

然后我给表格一些值开始,覆盖序列:

INSERT INTO test(id,data) VALUES (3,'something');
INSERT INTO test(id,data) VALUES (6,'something else');

现在如果我再添加几个值,让序列做它的事情:

INSERT INTO test(data) VALUES ('whatever');
INSERT INTO test(data) VALUES ('stuff');
INSERT INTO test(data) VALUES ('etc');

……我得到一个错误:

ORA-00001:违反唯一约束(FIDDLE_CEYTNFUWNIDRFXSPTDWJ.SYS_C0054804)

OK,我理解错误:显然序列从头开始并开始与现有值重叠。

如何在初始

INSERT
之后正确设置顺序?

我有一个小提琴:https://dbfiddle.uk/MtPocwBq

sql oracle primary-key identity-column
1个回答
0
投票

使用以下方法重置生成的 ID 序列:

alter table test modify (id generated as identity (start with 7));

见修改后的fiddle.

© www.soinside.com 2019 - 2024. All rights reserved.