如何在MySQL中重命名主键列?

时间:2010-04-24 03:39:08

标签: mysql primary-key rename

如何在MySQL中重命名主键列?

6 个答案:

答案 0 :(得分:18)

与改变任何其他专栏没什么不同 -

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

这会将表格keyfield中的pkey列更改为keyfield2 - 您必须像往常一样提供定义。

答案 1 :(得分:6)

也许你有一个外键约束。你可以通过SET foreign_key_constraints=0禁用它们,但你必须记得以后更新数据库。

答案 2 :(得分:5)

不要使用alter语句的PRIMARY KEY部分。主键将自动更新。

答案 3 :(得分:3)

可能是一种糟糕的做法。但是您可以将整个数据库导出为sql文本文件。找到并替换要重命名的PK,然后通过sql恢复数据库。

答案 4 :(得分:1)

如果您正在使用InnoDB,那么我认为您无法重命名主键,至少如果它们被外键引用则不能。您需要转储数据库,重命名列和引用转储文件中的键,然后重新加载数据库。

答案 5 :(得分:0)

如果其他表在您的表上有外键,则无法使用alter table直接重命名该列,它将引发以下错误:[HY000] [1025]将xxx重命名为yyy时出错(错误号:150) 你必须:

  • 从其他表中删除指向要重命名的主键的外键
  • 重命名主键
  • 将外来列添加到其他表

在Intellij中重命名表时,会生成代码do drop并添加外键。