为什么主键ID不按顺序?

问题描述 投票:1回答:1

我上一个记录的主键是552,当我添加新记录时,它分配的主键是584。

我很惊讶,想知道这种行为的可能原因。

应用程序详细信息:

  • 服务器:Heroku爱好计划-dyno
  • 数据库:Heroku Postgres
  • 框架:Ruby on Rails

附加信息->我正在使用Rails管理面板添加新记录

ruby-on-rails postgresql heroku rails-activerecord heroku-postgres
1个回答
0
投票

可能的原因:

  1. 某些记录已添加+删除
  2. 由于某些原因,插入交易被撤消,来自postgres manual

    注意:因为小序列,串行和大序列都是使用序列实现的,所以即使没有删除任何行,在列中出现的值序列中也可能存在“空洞”或缺口。即使从未成功将包含该值的行插入表列,也仍会“用完”从序列中分配的值。例如,如果插入事务回滚,则可能会发生这种情况。

  3. 对应序列table_name_seqincrement大于1(可能不是您的情况,有时对于分片很有用)
© www.soinside.com 2019 - 2024. All rights reserved.