web-dev-qa-db-ja.com

MySQLの主キー列の名前を変更するにはどうすればよいですか?

MySQLの主キー列の名前を変更するにはどうすればよいですか?

18
Vinicius Rocha

他の列を変更するのと同じです-

ALTER TABLE `pkey` CHANGE `keyfield` `keyfield2` INT( 11 ) NOT NULL AUTO_INCREMENT 

これにより、テーブルkeyfieldの列pkeykeyfield2と呼ばれるように変更されます。通常どおり後で定義を指定する必要があります。

18
Igor Serebryany

たぶん、外部キー制約が設定されています。これらはSET foreign_key_constraints=0で無効にできますが、後でデータベースを更新することを忘れないでください。

6
Alex

AlterステートメントのPRIMARYKEY部分は省略してください。主キーは自動的に更新されます。

5
Dirigible

悪い習慣の回避策の可能性があります。ただし、データベース全体をSQLテキストファイルにエクスポートすることはできます。名前を変更するPKを見つけて置き換えてから、SQLを介してデータベースを復元します。

3
Samuel De Rycke

InnoDBを使用している場合、主キーの名前を変更することはできないと思います。少なくとも、外部キーによって参照されている場合は名前を変更できません。データベースをダンプし、ダンプファイルの列と参照キーの名前を変更してから、データベースを再ロードする必要があります。

1
Eric Clack

他のテーブルのテーブルに外部キーがある場合、alter tableを使用して列の名前を直接変更することはできません。次のエラーがスローされます:[HY000] [1025] xxxの名前をyyyに変更するとエラーが発生します(errno:150)。

  • 名前を変更する主キーを指す他のテーブルから外部キーを削除します
  • 主キーの名前を変更します
  • 他のテーブルに外部列を追加する

Intellijでテーブルの名前を変更すると、外部キーを削除して追加するコードが生成されます。

0
Remy Mellet