当外键也是主键时,在 MySQL 上出现外键错误? [复制]

Posted

技术标签:

【中文标题】当外键也是主键时,在 MySQL 上出现外键错误? [复制]【英文标题】:Getting Foreign Key Error on MySQL when the Foreign key is also a primary key? [duplicate] 【发布时间】:2020-05-19 09:14:39 【问题描述】:

我是 SQL 新手,正在尝试按照以下方式创建架构。但是,我似乎无法正确获取 Member 表的 Foreign KEY。我在创建表后尝试添加它,最初似乎可以工作,但现在当我尝试添加测试数据行时出现此错误。

我确定我错过了一些非常愚蠢的事情,但如果有人能指出我做错了什么,那就太好了!

错误代码:1452。无法添加或更新子行:外键约束失败 (memberproject.member,约束member_ibfk_2外键(MemNo)参考bookingMemNo))

CREATE DATABASE MemberProject;  

USE MemberProject;  

CREATE TABLE Skill(  
SkillCode VARCHAR(20) NOT NULL,   
Description VARCHAR(140),  
ChargeOutRate VARCHAR(20),  
PRIMARY KEY (SkillCode)  
);  
CREATE TABLE Member(  
MemNo VARCHAR(10) NOT NULL,   
MemName VARCHAR(40),  
Department VARCHAR(20),  
SkillCode VARCHAR(20),  
PRIMARY KEY (MemNo),  
FOREIGN KEY (SkillCode) REFERENCES Skill (SkillCode)  

);  

CREATE TABLE Booking(  
MemNo VARCHAR(10) NOT NULL,   
ProjectNo VARCHAR(10) NOT NULL,   
DateWorkedOn VARCHAR(20),  
PRIMARY KEY (ProjectNo, MemNo),  
FOREIGN KEY (MemNo) REFERENCES Member (MemNo)   
);  

无法使用成员外键创建数据库,所以在事后添加它

ALTER table Member  
ADD foreign key (MemNo) references Booking (MemNo);  

CREATE TABLE Project(   
ProjectNo VARCHAR(10) NOT NULL,   
ProjName VARCHAR(40),  
StartDate VARCHAR(20),  
EndDate VARCHAR(40),  
Budget VARCHAR(40),  
Proj_Manager_MemNo VARCHAR(10),  
PRIMARY KEY (ProjectNo),  
FOREIGN KEY (ProjectNo) REFERENCES Booking (ProjectNo) ON UPDATE CASCADE  
);

【问题讨论】:

看起来您正在向Booking 中插入一行数据,其中MemNo 中的数据在member 中没有父项 【参考方案1】:

你要插入什么数据? 如果要向成员表添加数据,则必须首先在技能表中有技能代码的数据。其他带有外键的表也是如此。

【讨论】:

以上是关于当外键也是主键时,在 MySQL 上出现外键错误? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

数据库属性可以是主键还是外键?

SQL中有主外键的两表到底那这是主表

2020.05.24 mysql

2020.05.24 mysql

mysql 外键理解

MySQL的几个概念:主键,外键,索引,唯一索引