【发布时间】:2011-02-11 18:52:30
【问题描述】:
如何在 MySQL 中重命名主键列?
【问题讨论】:
标签: mysql primary-key rename
如何在 MySQL 中重命名主键列?
【问题讨论】:
标签: mysql primary-key rename
这与更改任何其他列没有什么不同 --
ALTER TABLE `pkey` CHANGE `keyfield` `keyfield2` INT( 11 ) NOT NULL AUTO_INCREMENT
这会将表pkey 中的keyfield 列更改为keyfield2——之后您必须像往常一样提供定义。
【讨论】:
如果您正在使用 InnoDB,那么我认为您不能重命名主键,至少如果它们被外键引用,您就不能。您需要转储数据库,重命名转储文件中的列和引用键,然后重新加载数据库。
【讨论】:
也许你有一个外键约束。您可以通过SET foreign_key_constraints=0 禁用它们,但您必须记住之后更新数据库。
【讨论】:
可能是一种不好的做法。但是您可以将整个数据库导出到一个 sql 文本文件。找到并替换要重命名的PK,然后通过sql恢复数据库。
【讨论】:
省略alter 语句的PRIMARY KEY 部分。主键会自动更新。
【讨论】:
如果其他表在你的表上有外键,你不能直接用alter table重命名列,会抛出如下错误:[HY000][1025] Error on rename of xxx to yyy (errno: 150) 你必须:
在 Intellij 中重命名表时,它会为您生成删除和添加外键的代码。
【讨论】: