在 MySQL 中创建外键
Posted
技术标签:
【中文标题】在 MySQL 中创建外键【英文标题】:Creating foreign keys in MySQL 【发布时间】:2015-01-18 18:06:08 【问题描述】:我正在尝试通过 mysql 中的外键将两个表链接在一起。 CLIENTS 表应使用 Client ID 属性链接到另一个表 (BIDS)。
CREATE TABLE CLIENTS (
CLIENTID NUMERIC(3) NOT NULL,
FOREIGN KEY(CLIENTID) REFERENCES BIDS(CLIENTID),
PRIMARY KEY(CLIENTID, EMAILADDRESSES,PHONENUMBERS,CONTACTS)
);
但是,当我尝试执行代码时,MySQL 会返回此错误。
#1005 - 无法创建表 'CLIENTS' (errno: 150)
这似乎不是语法错误,所以有谁知道导致问题的原因或我该如何解决?
【问题讨论】:
MySQL Creating tables with Foreign Keys giving errno: 150 的可能重复项 您的示例对我来说似乎不完整:如果表中没有这些列,如何将列EMAILADDRESSES
、PHONENUMBERS
、CONTACTS
放入主键?
BIDS(CLIENTID) 的数据类型是什么? errno 150最常见的原因是FK的数据类型与其引用的PK的数据类型不匹配。
在我更新时在此链接上查找答案。 ***.com/a/46240799/8158782
【参考方案1】:
当使用多列创建具有主键的表时,必须在查询中指定它们 -
CREATE TABLE CLIENTS (
CLIENTID NUMERIC(3) NOT NULL,
EMAILADDRESSES CHAR(64),
PHONENUMBERS VARCHAR(16),
CONTACTS VARCHAR(32),
FOREIGN KEY(CLIENTID) REFERENCES BIDS(CLIENTID),
CONSTRAINT key_name PRIMARY KEY(CLIENTID, EMAILADDRESSES,PHONENUMBERS,CONTACTS)
);
您还必须为多列主键指定名称。但是,为什么要将所有这些列作为键是一个谜。
【讨论】:
以上是关于在 MySQL 中创建外键的主要内容,如果未能解决你的问题,请参考以下文章