簡體   English   中英

如何在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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM