0
我有2個SQL語句如下:創建新表失敗,錯誤消息「外鍵約束的格式不正確」
CREATE TABLE IF NOT EXISTS countries
(
country_id INT PRIMARY KEY NOT NULL AUTO_INCREMENT,
country varchar(45) NOT NULL
);
CREATE TABLE IF NOT EXISTS patients
(
p_id INT PRIMARY KEY NOT NULL AUTO_INCREMENT,
p_fname varchar(50) NOT NULL,
p_mname varchar(10) NULL,
p_lname varchar(50) NOT NULL,
age INT NOT NULL,
sex SET ('Male','Female'),
phone_num_mobile varchar(10) NULL,
phone_num_res varchar(7) NULL,
phone_num_office varchar(7) NULL,
email varchar(75) NULL,
addr_house varchar(10) NULL,
addr_street1 varchar(45) NOT NULL,
addr_street2 varchar(45) NULL,
addr_street3 varchar(45) NULL,
addr_city varchar(20) NOT NULL,
addr_country varchar(45) NOT NULL,
occupation varchar(20) NOT NULL,
married BOOLEAN NOT NULL,
FOREIGN KEY(addr_country) REFERENCES countries(country)
);
第一個成功執行,第二個,它的外鍵分配上一個表,無法執行消息「外鍵約束錯誤地形成」。我也嘗試改變第二個查詢的外鍵字段(addr_country)與「國家」表(國家)的名稱相同,但它是無效的。
任何人都可以請解釋我發生了什麼事情,並建議我解決這個問題?
在此先感謝。
你爲什麼不引用country_id字段? CONSTRAINT'fk_patient_country'FOREIGN KEY(addr_country)REFERENCES國家(國家) – Kevin
在您的患者表中您應該有country_id而不是國家,這是一個更好的設計練習 – Kevin
建議您使用2-char標準國家代碼,而不是4字節的INT。 –