gpt4 book ai didi

ruby-on-rails - Rails 3迁移:(非主键)列上的自动增量?

转载 作者:行者123 更新时间:2023-12-02 04:07:00 25 4
gpt4 key购买 nike

我正在寻找一种创建自动增加auto:id列方式的列的方法。我可能可以在模型中以某种方式处理此问题,但这似乎很笨拙。我没有在Rails 3的库存中找到任何可以处理此问题的东西。有没有可用的 gem 可以解决这个问题?令我惊讶的是它还不是一个选择,因为Rails可以处理主键列的这种行为。

最佳答案

通常,自动递增列是使用数据库序列实现的。使用序列而不是计算下一个增量的优点是,从序列中获取下一个值是原子的。因此,如果您有多个创建新元素的流程,那么序列将确保您的数字确实是唯一的。

序列可用于postgresql,oracle,mysql,...

例如,如果您使用的是postgres,如何实现呢?

  • 从序列中选择下一个值:
    Integer(Operator.connection.select_value("SELECT nextval('#{sequence_name}')"))
  • 创建一个序列:
    Operator.connection.execute("CREATE sequence #{sequence_name}")
  • 设置序列的起始值:
    Operator.connection.execute("SELECT setval('#{sequence_name}', #{new_start_serial})")

  • 希望这可以帮助。

    关于ruby-on-rails - Rails 3迁移:(非主键)列上的自动增量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7126065/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com