【问题标题】:Rails & Postgresql create a field that auto increments from 1Rails 和 Postgresql 创建一个从 1 自动递增的字段
【发布时间】:2013-01-27 06:28:33
【问题描述】:

我希望在我的表 orders 中创建一个名为 id_visual 的字段,该字段从 1 开始并从那里自动递增。我可以在我的模型中创建一个方法来做到这一点,但我认为必须有一个更好更简单的方法。有什么想法吗?

【问题讨论】:

    标签: ruby-on-rails-3 postgresql auto-increment


    【解决方案1】:

    据我所知,您想要基于主 ID 的辅助 ID?身份密钥只能是基于表的,不能依赖于另一个密钥。您必须在代码中执行此操作,然后将其保存到 before_create 的新字段中。最简单的方法是针对您要标识的每个订单,根据主键是什么,获取小于或等于您正在使用的订单的所有订单的计数。它是一个简单的查询计算。

    【讨论】:

    • 一个受竞争条件约束的查询,一旦删除一行,您的计数就会失败。
    • 实际上我最终这样做并在accounts 表中存储了一个orders_count 字段,因此删除订单无关紧要。这部分非常重要。
    【解决方案2】:

    这是您的数据库应该在某个级别提供的东西,无论是在事务中还是在其他锁定中。

    查看这个问题,了解一些将 postgres 配置为自动增加列的方法:

    PostgreSQL Autoincrement

    【讨论】:

      猜你喜欢
      • 2015-01-14
      • 2015-06-06
      • 2011-03-08
      • 2015-03-05
      • 1970-01-01
      • 2012-10-23
      • 1970-01-01
      • 1970-01-01
      • 2014-04-11
      相关资源
      最近更新 更多