【发布时间】:2011-01-12 02:47:10
【问题描述】:
当我从 Postgresql 表中删除所有记录,然后尝试重置序列以在插入新记录时开始编号为 1 的新记录时,我得到不同的结果:
SELECT setval('tblname_id_seq', (SELECT COALESCE(MAX(id),1) FROM tblname));
这会将序列的当前值设置为 1,但 NEXT 记录(实际上是第一个,因为还没有记录)获得编号 2!
而且我不能设置为0,因为序列中的最小值是1!
当我使用时:
ALTER SEQUENCE tblname_id_seq RESTART WITH 1;
插入的第一条记录实际上是数字 1 !但是上面的代码不接受 SELECT 作为值而不是 1。
我希望在没有记录时将序列重置为数字 1,然后第一条记录应该从 1 开始。但是当表中已经有记录时,我想重置序列以便下一条记录插入将获得 {highest}+1
有人对此有明确的解决方案吗?
【问题讨论】:
标签: postgresql sequence reset