标记 -> 这是一个菜鸟问题!
在 Rails 迁移文件中是否可以创建列 ID primary_key no auto_increment?
我通过运行以下 change_column 方法成功删除了 auto_increment。
class DropAutoIncrement < ActiveRecord::Migration
def change
change_column :my_table, :id, :integer
end
end
我使用了活动记录 4.0.2。
看来,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')