![](/img/trans.png)
[英]Alter primary key column that is also a foreign key of another table - Mysql
[英]How to alter a column which is a primary key in the table and a foreign key in another table in MySQL?
我想運行以下sql查詢:
ALTER TABLE USER MODIFY USER_ID int UNSIGNED NOT NULL AUTO_INCREMENT
但是USER_ID
是另一個表上的外鍵。 更改此列的最佳方法是什么?
這是我得到的錯誤:
Error Code: 1833. Cannot change column 'USER_ID': used in a foreign key constraint 'order_detail_ibfk_1' of table 'test.order_detail'
這必須是多步驟的
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 ... DROP FOREIGN KEY,然后再使用ALTER TABLE ... ADD FOREIGN KEY。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.