[英]Unable to alter table with foreign key
我的兩個空表:
CREATE TABLE person (
person_id SMALLINT UNSIGNED,
fname VARCHAR(20),
lname VARCHAR(20),
gender ENUM('m', 'f'),
birth_date DATE,
street VARCHAR(30),
city VARCHAR(20),
state VARCHAR(20),
country VARCHAR(20),
postal_code VARCHAR(20),
CONSTRAINT pk_person PRIMARY KEY (person_id)
);
create TABLE favorite_food (
person_id SMALLINT UNSIGNED,
food VARCHAR(20),
CONSTRAINT pk_favorite_food PRIMARY KEY (person_id, food),
CONSTRAINT fk_fav_food_person_id FOREIGN KEY (person_id) REFERENCES person (person_id)
);
需要修改:
ALTER TABLE person MODIFY person_id SMALLINT UNSIGNED AUTO_INCREMENT;
結果:
錯誤1833(HY000):無法更改列“ person_id”:用於表“ tom.favorite_food”的外鍵約束“ fk_fav_food_person_id”
為什么會這樣,並且有解決此問題的方法而無需刪除表並重新定義它們?
這可能是因為在任何行中person.person_id中已經有數據(NOT NULL)。 您可以通過禁用外鍵檢查來規避此問題
我認為處理此問題的最佳方法是從“ favourite_food”中刪除外鍵引用,親自更改列,然后重新創建外鍵引用。 這樣可以正確地重新創建鍵所依賴的索引。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.