【发布时间】: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中没有父项