2014-11-20 66 views
0

我想在phpMyAdmin的MySQL中創建一個數據庫。我能夠毫無困難地創建表,但我也想添加一些外鍵。在這種情況下,我想通過CLIENTID屬性鏈接BIDS和CLIENTS表。在phpMyAdmin(MySQL)中創建外鍵

CREATE TABLE BIDS (
BIDID    NUMERIC(3) NOT NULL PRIMARY KEY, 
CLIENTID   NUMERIC(3) NOT NULL 
); 

CREATE TABLE CLIENTS (
CLIENTID   NUMERIC(3) NOT NULL, 
EMAILADDRESSES  VARCHAR(100) NOT NULL, 
PHONENUMBERS  VARCHAR(11) NOT NULL, 
FOREIGN KEY (CLIENTID) REFERENCES BIDS (CLIENTID), 
PRIMARY KEY (CLIENTID,EMAILADDRESSES,PHONENUMBERS) 
); 

研究告訴我,該語法是正確的,但此代碼返回以下錯誤。

1005 - 無法創建表'客戶(錯誤:150)

顯然,解決方案可能涉及的東西叫做 'InnoDB的'。我如何使用它來解決我的問題?

回答

1

語法沒問題,但問題與FORIEGN KEY聲明如下。您無法在非鍵列上創建FK。在BIDS表是BIDID定義爲Primary Key而不是CLIENTID

FOREIGN KEY (CLIENTID) REFERENCES BIDS (CLIENTID) 

所以,你FORIEGN KEY定義實際上應該是

FOREIGN KEY (CLIENTID) REFERENCES BIDS (BIDID) 

看到這裏演示http://sqlfiddle.com/#!2/f1c9ec

+0

好。那麼這將把正確的領域連接在一起? – Ben 2014-11-20 22:34:56

+0

是的,根據您的要求,您可以在BIDS表中定義「clientid」作爲PK。 – Rahul 2014-11-20 22:37:05