【发布时间】:2012-04-24 06:43:01
【问题描述】:
我手动向表中添加了一些行,并且手动设置了 ID (auto_increment)。现在,当我尝试通过我的应用程序将新行添加到数据库表中时,数据库表中出现错误,即创建的 ID 值已经存在。
如何手动设置下一个 ID 值(例如,在表中我必须设置 ID,那么如何告诉 PostgreSQL,下一个 ID 应该从数字 3 开始计算)?
【问题讨论】:
标签: sql postgresql auto-increment
我手动向表中添加了一些行,并且手动设置了 ID (auto_increment)。现在,当我尝试通过我的应用程序将新行添加到数据库表中时,数据库表中出现错误,即创建的 ID 值已经存在。
如何手动设置下一个 ID 值(例如,在表中我必须设置 ID,那么如何告诉 PostgreSQL,下一个 ID 应该从数字 3 开始计算)?
【问题讨论】:
标签: sql postgresql auto-increment
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”
编辑(@Glenn 的 10 倍):
SELECT setval('id_seq', max(id)) FROM table;
【讨论】:
我认为有一个更简单的方法:
ALTER SEQUENCE "seq_product_id" RESTART WITH 10
【讨论】: