【发布时间】:2015-03-25 00:11:15
【问题描述】:
我想让 Postgres 选择下一个可用的第一个 id,以便在以下情况下不会发生错误:
CREATE TABLE test(
id serial PRIMARY KEY,
name varchar
);
然后:
INSERT INTO test VALUES (2,'dd');
INSERT INTO test (name) VALUES ('aa');
INSERT INTO test (name) VALUES ('bb');
这将产生一个约束错误,因为id 是主要的。
如何告诉 Postgres 插入具有下一个空闲 id 的记录?
【问题讨论】:
-
你不需要告诉它选择。它会自动完成。只需抑制 id 信息。当然,如果主是串行的。 Postgresql 将为它创建一个序列
-
@Jorge:我认为 OP 在他们的数据库中已经有乱序的 ID,并且想知道如何解决问题......
-
您不应该为序列列提供手动值。为什么你认为你需要这样做?
-
我明白,但在我的场景中:用户可以指定他想要的 id 或者他不指定 id
-
承担用户控制ID的责任。
标签: database postgresql database-design auto-increment gaps-and-islands