Postgres 添加 identity 导致错误:起始值(0)不能小于最小值(1)。

3

我试图运行这个,因为我希望自动生成的ID从0开始

alter table gender
alter column gender_id ADD GENERATED ALWAYS AS IDENTITY (START WITH 0 INCREMENT BY 1)

出现错误:

起始值 (0) 不能小于最小值 (1)

由于我对PostgreSQL还不熟悉,所以不确定如何使其从0开始自增。

1个回答

5

所有的身份列都会在后端创建一个序列。在您的身份列的sequence_option中,您没有提供MINVALUE,因此默认情况下它将考虑MINVALUE1。因此,您必须明确定义MINVALUE,如下所示:

ALTER TABLE gender
ALTER COLUMN gender_id ADD GENERATED ALWAYS AS IDENTITY (MINVALUE  0 START WITH 0 INCREMENT BY 1)

我注意到我也可以尝试使用类似这样的重新排序。ALTER SEQUENCE gender_gender_id_seq RESTART WITH 0 INCREMENT BY 1; - 不过还不太对。 - PositiveGuy
你知道如何修正 ALTER 吗?我使用 ALTER 时也遇到了相同的错误。 - PositiveGuy
你的alter sequence语句是正确的。如果gender_gender_id_seq存在,它将执行所需的操作。 - Akhilesh Mishra
1
在alter中添加minvalue。ALTER SEQUENCE gender_gender_id_seq MINVALUE 0 RESTART WITH 0 INCREMENT BY 1; - Akhilesh Mishra
似乎没有一个。https://docs.oracle.com/cd/B19306_01/server.102/b14200/statements_2011.htm - PositiveGuy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接