MySQLの主キー列の名前を変更するにはどうすればよいですか?
他の列を変更するのと同じです-
ALTER TABLE `pkey` CHANGE `keyfield` `keyfield2` INT( 11 ) NOT NULL AUTO_INCREMENT
これにより、テーブルkeyfield
の列pkey
がkeyfield2
と呼ばれるように変更されます。通常どおり後で定義を指定する必要があります。
たぶん、外部キー制約が設定されています。これらはSET foreign_key_constraints=0
で無効にできますが、後でデータベースを更新することを忘れないでください。
AlterステートメントのPRIMARYKEY部分は省略してください。主キーは自動的に更新されます。
悪い習慣の回避策の可能性があります。ただし、データベース全体をSQLテキストファイルにエクスポートすることはできます。名前を変更するPKを見つけて置き換えてから、SQLを介してデータベースを復元します。
InnoDBを使用している場合、主キーの名前を変更することはできないと思います。少なくとも、外部キーによって参照されている場合は名前を変更できません。データベースをダンプし、ダンプファイルの列と参照キーの名前を変更してから、データベースを再ロードする必要があります。
他のテーブルのテーブルに外部キーがある場合、alter tableを使用して列の名前を直接変更することはできません。次のエラーがスローされます:[HY000] [1025] xxxの名前をyyyに変更するとエラーが発生します(errno:150)。
Intellijでテーブルの名前を変更すると、外部キーを削除して追加するコードが生成されます。