Rails 迁移中没有自动递增主键 ID

问题描述 投票:0回答:2

在 Rails 迁移文件中可以创建列 ID 主键没有 auto_increment 吗?

ruby-on-rails-3
2个回答
2
投票

我通过运行以下change_column方法成功删除了auto_increment。

class DropAutoIncrement < ActiveRecord::Migration
  def change
    change_column :my_table, :id, :integer
  end
end

我使用的是activerecord 4.0.2。


1
投票

Yuki的回答似乎太老了? 它对我不起作用。 但以下方法有效:

class CreateNoAutoincrement < ActiveRecord::Migration[4.2]
  def up
    create_table( :my_table, :id => false ) {|t|
      t.integer :id,    null: false ;
      t.string  :token, null: false ;
    }
    add_index :my_table, :id,    unique: true ;
    add_index :my_table, :token, unique: true ;
  end
  def down
    drop_table :my_table ;
  end
end

在 MariaDB 上,表如下所示:

MariaDB [foo_devel]> describe my_table ;
+-------+--------------+------+-----+---------+-------+
| Field | Type         | Null | Key | Default | Extra |
+-------+--------------+------+-----+---------+-------+
| id    | int(11)      | NO   | PRI | NULL    |       |
| token | varchar(255) | NO   | UNI | NULL    |       |
+-------+--------------+------+-----+---------+-------+
2 rows in set (0.001 sec)

很好,我仍然得到一个主键,而不仅仅是两个唯一索引 (可能是因为列名是“id”)

© www.soinside.com 2019 - 2024. All rights reserved.