【问题标题】:How rails sets ids for db entriesrails 如何为数据库条目设置 id
【发布时间】:2012-07-25 05:27:08
【问题描述】:

如果您创建 5 个 User 记录,则将它们全部销毁。创建的数据库中的下一个User 条目将有一个6 的id。rails 怎么知道给这个新行一个id6 而不是1?我遇到了这个问题,因为我试图“猜测”User 记录的下一个 id 是什么,但在上述情况下遇到了麻烦。我目前正在使用 postgresql,但我不相信这个功能会依赖于数据库?非常感谢!

【问题讨论】:

  • 不要去猜测,你的猜测迟早会错的。

标签: ruby-on-rails database ruby-on-rails-3


【解决方案1】:

这取决于数据库。插入时,大多数数据库会返回插入行的 id。在 PostgreSQL 中,您拥有所谓的“序列”,它保留当前/下一个 id 号(不确定是哪个)。其他数据库可能会有所不同。

见:https://github.com/rails/rails/blob/master/activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb#L726

这是它找到当前序列的地方:https://github.com/rails/rails/blob/master/activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb#L1513

【讨论】:

  • 谢谢 pedro,有没有办法访问这个序列来“猜”下一个 id 是什么?
猜你喜欢
  • 2013-11-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多