13

我手动在表中添加了一些行,还手动设置了 ID(auto_increment)。现在,当我尝试通过我的应用程序将新行添加到 DB 表中时,到 DB 表我收到错误,即创建的 ID 值已经存在。

如何手动设置下一个 ID 值(例如,在表中我必须设置 ID,那么如何告诉 PostgreSQL,下一个 ID 应该从数字 3 开始计算)?

4

2 回答 2

30

http://www.postgresql.org/docs/current/static/functions-sequence.html

select setval('sequence-name', <new-value>);

您可以从表定义中获取序列名称:

id       | integer                | not null default nextval('id_seq'::regclass)

在这种情况下,序列被命名为“id_seq”

编辑(10x 到@Glenn):

SELECT setval('id_seq', max(id)) FROM table;
于 2012-04-11T22:19:27.457 回答
11

我认为有一个更简单的方法:

ALTER SEQUENCE "seq_product_id"  RESTART WITH 10
于 2017-01-08T00:24:34.127 回答