如何更改rails迁移文件中的主键?

时间:2013-03-25 18:39:56

标签: ruby-on-rails database-migration rails-migrations

我需要像这样迁移一个旧的mysql表:

Products
  name (string, primary_key)

到这个架构:

Products
  id (integer, primary_key, auto_generated)
  name (unique)

我需要在新表中填充Products.id值。 如何编写rails迁移文件?我正在使用Rails 3.2.7

我现在有两个问题: 1.我找不到在ActiveRecord :: Migration中删除主键的方法 2.我不知道如何为新添加的主键生成值。

2 个答案:

答案 0 :(得分:15)

您可以在迁移中执行任意SQL:

execute "ALTER TABLE `products` DROP PRIMARY KEY"

然后添加新列:

add_column :products, :id, :primary_key

请参阅:

Remove Primary Key in MySQL

how to add a primary key to a table in rails

http://thinkwhere.wordpress.com/2009/05/09/adding-a-primary-key-id-to-table-in-rails/

http://api.rubyonrails.org/classes/ActiveRecord/Migration.html

答案 1 :(得分:8)

如果您使用的是Postgresql,则语法略有不同。

ALTER TABLE <table_name> DROP CONSTRAINT <table_name>_pkey;