【问题标题】:Getting Foreign Key Error on MySQL when the Foreign key is also a primary key? [duplicate]当外键也是主键时,在 MySQL 上出现外键错误? [复制]
【发布时间】: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 中没有父项

标签: mysql sql


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2019-09-15
    • 2017-08-06
    • 1970-01-01
    • 2022-11-21
    • 1970-01-01
    • 1970-01-01
    • 2015-02-03
    • 2015-03-08
    • 1970-01-01
    相关资源
    最近更新 更多