首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >外键错误1215

外键错误1215
EN

Stack Overflow用户
提问于 2013-11-13 05:40:22
回答 2查看 68关注 0票数 1

尝试在表供应商上创建用于Supplier_ID引用表支付的外键。

代码语言:javascript
复制
CREATE TABLE Payment (
Supplier_ID INT (4) NOT NULL,
Date DATE NOT NULL,
Amount INT (4), 
Payment_ID INT (4) NOT NULL,
PRIMARY KEY (Payment_ID, Supplier_ID)
);
Query OK, 0 rows affected (0.10 sec)

CREATE TABLE Supplier (
Supplier_ID INT(4) NOT NULL,    
Name VARCHAR(4) NOT NULL,
Country VARCHAR(4) NOT NULL,
Reliability_Score INT(4),
Contact_Info VARCHAR(4), 
PRIMARY KEY (Supplier_ID)
FOREIGN KEY (Supplier_ID) REFERENCES Payment(Supplier_ID) 
);
ERROR 1215 (HY000): Cannot add foreign key constraint  

如果我能提供更多的信息,请告诉我,谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-11-13 05:43:52

外键必须引用唯一的列。因此,Supplier_ID列需要是唯一的。

然而,如果我正确理解你的意图的话,你可能会把它倒过来。它可能是引用供应者表的支付表中的supplier_ID的外键。

票数 1
EN

Stack Overflow用户

发布于 2013-11-13 05:47:02

在关系数据库的上下文中,外键是一个表中唯一标识另一个表行的字段(或字段集合)。换句话说,外键是用于在两个表中的数据之间建立和执行链接的列或列的组合。

在您的代码中,您已经将主键声明为PRIMARY KEY (Payment_ID, Supplier_ID),这是两个列的组合,这很好,但是在创建外键FOREIGN KEY (Supplier_ID) REFERENCES Payment(Supplier_ID)时,您将一个列引用为两个列的组合,这是错误的。

在这里阅读Key

现在您的解决方案:首先创建供应商表

代码语言:javascript
复制
CREATE TABLE Supplier (
Supplier_ID INT(4) NOT NULL,    
Name VARCHAR(4) NOT NULL,
Country VARCHAR(4) NOT NULL,
Reliability_Score INT(4),
Contact_Info VARCHAR(4), 
PRIMARY KEY (Supplier_ID)
);

现在是付款表

代码语言:javascript
复制
CREATE TABLE Payment (
Supplier_ID INT (4) NOT NULL,
Date DATE NOT NULL,
Amount INT (4), 
Payment_ID INT (4) NOT NULL,
PRIMARY KEY (Payment_ID, Supplier_ID),
FOREIGN KEY (Supplier_ID) REFERENCES Supplier(Supplier_ID)
);
票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19946172

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档