【问题标题】:Creating foreign keys in phpMyAdmin (MySQL)在 phpMyAdmin (MySQL) 中创建外键
【发布时间】:2015-01-18 23:25:59
【问题描述】:

我正在尝试在 phpMyAdmin 上的 MySQL 中创建一个数据库。我可以毫无困难地创建表,但我还想添加一些外键。在这种情况下,我想通过 CLIENTID 属性链接 BIDS 和 CLIENTS 表。

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 - 无法创建表 'CLIENTS' (errno: 150)

显然,解决方案可能涉及称为“InnoDB”的东西。如何使用它来解决我的问题?

【问题讨论】:

    标签: php mysql phpmyadmin key create-table


    【解决方案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

    【讨论】:

    • 好的。那么这会将正确的字段链接在一起吗?
    • 是的,根据您的要求,您也可以在 BIDS 表中将clientid 定义为 PK。
    猜你喜欢
    • 2013-09-07
    • 2016-10-03
    • 2023-03-08
    • 2014-12-03
    • 2017-06-13
    • 2018-08-14
    • 2012-08-16
    • 2015-01-18
    相关资源
    最近更新 更多