嗨,我有這三個非常簡單的表,但我無法修復它以獲得正確的外鍵格式。
CREATE TABLE company( company_name varchar(30) UNIQUE NOT NULL, bid INT(15) NOT NULL UNIQUE, cid INT(15) NOT NULL UNIQUE, FOREIGN KEY (bid) REFERENCES branch(branch_id), FOREIGN KEY (cid) REFERENCES contact(聯系人ID));
創建表分支(branch_id INT(15)NOT NULL AUTO_INCREMENT UNIQUE,branch_type varchar(30),cid INT(15)NOT NULL UNIQUE,主鍵(branch_id),外鍵(cid)參考聯系人(contact_id));
CREATE TABLE 聯系人(contact_id INT(15) NOT NULL AUTO_INCREMENT UNIQUE,fst_name varchar(20),mdl_name varchar(20),lst_name varchar(20),sex varchar(20),dob DATE,phone_number INT(15),address varchar( 255), email varchar(255), bid INT(15) NOT NULL UNIQUE, PRIMARY KEY (contact_id), FOREIGN KEY (bid) REFERENCES branch (branch_id) )ENGINE=InnoDB;
他們三個都有相同的錯誤150。非常感謝你的幫助。桌子
uj5u.com熱心網友回復:
問題是您在創建表之前company參考了branchand表。contact此外,分支表參考聯系表,反之亦然,因此資料庫如下所示:
創建contact表...有一個bid欄位連接到名為branch...表分支的表不存在->錯誤
您必須先創建contact表,但沒有對 bid 的外部 id 參考,然后創建branch表,然后創建company表。設定好表后,您可以執行另一個查詢來添加一個外國 id 參考到出價。
所以像這樣:
CREATE TABLE contact( contact_id INT(15) NOT NULL AUTO_INCREMENT UNIQUE, fst_name varchar(20), mdl_name varchar(20), lst_name varchar(20), sex varchar(20), dob DATE, phone_number INT(15), address varchar(255), email varchar(255), bid INT(15) NOT NULL UNIQUE, PRIMARY KEY (contact_id) )ENGINE=InnoDB;
CREATE TABLE branch( branch_id INT(15) NOT NULL AUTO_INCREMENT UNIQUE, branch_type varchar(30), cid INT(15) NOT NULL UNIQUE, PRIMARY KEY (branch_id), FOREIGN KEY (cid) REFERENCES contact(contact_id) );
CREATE TABLE company( company_name varchar(30) UNIQUE NOT NULL, bid INT(15) NOT NULL UNIQUE, cid INT(15) NOT NULL UNIQUE, FOREIGN KEY (bid) REFERENCES branch(branch_id), FOREIGN KEY (cid) REFERENCES contact(contact_id) );
注意我洗掉了FOREIGN KEY (bid) REFERENCES branch (branch_id)
然后:
ALTER TABLE contact ADD FOREIGN KEY (bid) REFERENCES branch(branch_id);
PS 按相同順序運行命令
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/474801.html
下一篇:根據條件減去行
