4

Railsの移行を通じて、テーブルで主キーIDを以下のように定義したい

id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT

私はmysqldbを使用しています。

4

4 に答える 4

2

私はこれで解決しました

create_table things, :id => false do |t|
  t.column :id, 'INT UNSIGNED NOT NULL AUTO_INCREMENT, PRIMARY KEY (id)'
  t.string :name
  ...

また

create_table things, :id => false do |t|
  t.column :id, ID_COLUMN
  t.string :name
  ...

ここで、ID_COLUMNは一部の構成/モジュールで定義され、他の移行でも使用されます

于 2011-07-14T09:38:39.550 に答える
2

#execute移行内で必要な SQL を使用するだけです。

execute "ALTER TABLE things MODIFY id UNSIGNED(10) NOT NULL AUTO_INCREMENT"

または、列がまだまったく存在しない場合:

execute "ALTER TABLE things ADD COLUMN id UNSIGNED(10) NOT NULL AUTO_INCREMENT PRIMARY KEY"

それはうまくいくはずです。移行では、純粋な SQL にドロップダウンしても問題ないと思います。多くの場合、それが必要です。

于 2011-07-13T08:00:46.733 に答える