2014-11-20 69 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