postgres不能正确地递增我的ID,而我的ID是串行数据类型的。

我的数据库中有500条记录,当我删除id=5,然后尝试重新插入相同的记录时,它没有正确更新序列。它插入新的记录,其中id=505,但是我最大的id是500。我也在更新序列之前和之后的事务与以下查询:SELECT setval(pg_get_serial_sequence(‘table_name’, ‘id’), max(id)) FROM table_name。

仍然是增量序列不正确。

id bigserial主键 NOT NULL

任何帮助将被感激.谢谢

解决方案:

删除一条已被用于填充列的序列的记录不会更新序列。

如果你需要一个无间隙的排序号,你不能使用序列。

请看 https:/www.postgresql.orgdocs9.5sql-createsequence.html 其中说。

因为nextval和setval的调用永远不会被回滚,所以如果需要对序列号进行 “无间隙 “分配,就不能使用序列对象。可以通过使用包含计数器的表的排他性锁定来建立无间隙赋值;但这种解决方案比序列对象贵得多,特别是当许多事务需要序列号并发时。

给TA打赏
共{{data.count}}人
人已打赏
解决方案

从pivottable条件中创建新的pandas数据框架。

2022-5-12 15:00:23

解决方案

在应用层的VertX Spring框架应用中进行延迟故障注入。

2022-5-12 15:00:25

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索