当外键也是主键时,在 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
)参考booking
(MemNo
))
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 上出现外键错误? [复制]的主要内容,如果未能解决你的问题,请参考以下文章