postgres没有正确地递增串行数据类型的id



我的数据库中有500条记录,当我删除id=5,然后尝试重新插入同一条记录时,它没有正确更新序列。它插入id=505的新记录,但是我的最大id是500。我还使用以下查询更新交易前后的排序:从表名称中选择setval(pg_get_serial_sequence('table_name','id'(,max(id((;

尽管如此,它还是不正确地递增序列。

id bigserial主键NOT NULL

任何帮助都将不胜感激。感谢

删除已使用as序列填充列的行不会更新序列。

如果您需要无间隙订购号,则不能使用序列号。

请参阅https://www.postgresql.org/docs/9.5/sql-createsequence.html上面写着:

因为nextval和setval调用永远不会回滚,所以sequence如果序列号的"无间隙"赋值为需要。使用exclusive可以建立无间隙分配锁定包含计数器的桌子;但是这个解决方案比序列对象更昂贵,尤其是在有许多事务的情况下同时需要序列号。

相关内容

最新更新