首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在MySQL中更改表中的主键和另一个表中的外键的列?

问如何在MySQL中更改表中的主键和另一个表中的外键的列?
EN

Stack Overflow用户
提问于 2016-08-05 17:03:03
回答 1查看 104关注 0票数 0

我想运行以下sql查询:

代码语言:javascript
复制
ALTER TABLE USER MODIFY USER_ID int UNSIGNED NOT NULL AUTO_INCREMENT

但是USER_ID是另一个表上的外键。更改此列的最佳方法是什么?

这是我得到的错误:

代码语言:javascript
复制
Error Code: 1833. Cannot change column 'USER_ID': used in a foreign key constraint 'order_detail_ibfk_1' of table 'test.order_detail'
EN

回答 1

Stack Overflow用户

发布于 2016-08-05 17:15:10

这必须是multistep

代码语言:javascript
复制
ALTER TABLE other_table DROP FOREIGN KEY fk_name
ALTER TABLE other_table MODIFY USER_ID int UNSIGNED NOT NULL
ALTER TABLE USER MODIFY USER_ID int UNSIGNED NOT NULL AUTO_INCREMENT
ALTER TABLE other_table ADD FOREIGN KEY ...

在MySQL 5.7中,服务器禁止对可能导致丢失引用完整性的外键列进行更改。它还禁止更改这类可能不安全的列的数据类型。例如,允许将VARCHAR(20)更改为VARCHAR(30),但不允许将其更改为VARCHAR(1024),因为这会改变存储单个值所需的长度字节数。一种解决方法是使用ALTER TABLE ...在更改列定义和ALTER TABLE之前删除外键...之后添加外键。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38785347

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档