如何在MySQL中重命名主键列?
答案 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并添加外键。