【问题标题】:Auto increment a non-primary key field in Ruby on Rails在 Ruby on Rails 中自动增加非主键字段
【发布时间】:2011-03-14 07:47:00
【问题描述】:

在 RoR 迁移中,如何自动递增非主键字段?我想在 db 定义中执行此操作,而不是在模型中。

【问题讨论】:

    标签: ruby-on-rails database migration primary-key auto-increment


    【解决方案1】:

    您需要执行一条 SQL 语句。

    statement = "ALTER TABLE `users` CHANGE `id` `id` SMALLINT( 5 ) UNSIGNED NOT NULL AUTO_INCREMENT" 
    ActiveRecord::Base.connection.execute(statement)
    

    您可以在迁移中手动输入

    请注意,这只是一个示例。最终的 SQL 语句语法取决于数据库。

    【讨论】:

    • 我是否正确地假设您的回答是 Rails 不提供不直接执行 SQL 语句的方法来做到这一点?我希望类似:t.integer :auto_i, :auto_increment => true 能够工作(但它没有)。
    • 是 Rails 在迁移中不提供 :auto_increment 关键字
    • 如果你想在 Rails 中使用所有关键字或其他好东西,那么 . “用于 ROR 的 ruby​​mine IDE”将非常有用。我使用了过去 6 个月。
    • 注意这是mysql的具体解决方案。 Postgres 不支持AUTO_INCREMENT。跳入这个问题以获取 Postgres 解决方案stackoverflow.com/questions/787722/postgresql-autoincrement
    猜你喜欢
    • 2020-07-18
    • 2016-06-04
    • 2011-10-22
    • 2020-10-22
    • 1970-01-01
    • 1970-01-01
    • 2023-04-01
    • 2016-06-19
    • 2014-06-20
    相关资源
    最近更新 更多