PostgreSQL - 如何手动设置auto_increment的下一个值?

时间:2012-04-11 22:17:53

标签: sql postgresql auto-increment

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

如何手动设置下一个ID值(例如,在表I中我需要ID,以及如何告诉PostgreSQL,下一个ID应该从数字3开始计算)?

2 个答案:

答案 0 :(得分:21)

http://www.postgresql.org/docs/9.1/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;

答案 1 :(得分:3)

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

ALTER SEQUENCE "seq_product_id"  RESTART WITH 10