首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >MySQL -任何将外键设置为空的方法吗?

MySQL -任何将外键设置为空的方法吗?
EN

Stack Overflow用户
提问于 2017-04-10 03:15:30
回答 2查看 55关注 0票数 0

我正在为学校的健身房建立一个数据库,没有教练的“公开健身房”,但是你会注册开放健身房,就像其他课程一样。这是合理的,一个FK将不能是空的,因为它将是一个PK在父表,但如果有任何方法绕过这一点,任何帮助将是伟大的。

不确定我是否应该做一个额外的桌子,只是为了公开的健身房,不确定这是否是最理想的方式进行这方面。

代码语言:javascript
运行
复制
CREATE TABLE `instructor` (
`InstructorID` VARCHAR(50) NOT NULL,
`First Name` VARCHAR(50) DEFAULT NULL,
`Last Name` VARCHAR(50) DEFAULT NULL,
PRIMARY KEY (InstructorID)
) ENGINE=INNODB DEFAULT CHARSET=latin1;

CREATE TABLE `class` (
`ClassID` DECIMAL(10,0) NOT NULL,
`Name` VARCHAR(50) DEFAULT NULL,
`Type` VARCHAR(50) DEFAULT NULL,
`Discount Price` DECIMAL(10,0) DEFAULT NULL,
`Regular Price` DECIMAL(10,0) DEFAULT NULL,
`InstructorID` VARCHAR(50) DEFAULT NULL,
`UnitID` DECIMAL(10,0) DEFAULT NULL,
`CourseID` DECIMAL(10,0) NOT NULL,
PRIMARY KEY (ClassID),
FOREIGN KEY (UnitID) REFERENCES subunit(UnitID),
FOREIGN KEY (InstructorID) REFERENCES instructor(InstructorID),
FOREIGN KEY (CourseID) REFERENCES course(CourseID)
) ENGINE=INNODB DEFAULT CHARSET=latin1;
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-04-11 00:56:22

我看到了问题的原因,因为您放置了一个空值,即'',而不是null。

代码语言:javascript
运行
复制
INSERT INTO Class VALUES ('10067','Beach Volleyball','Recreational','0','0','','000010','0006');

''更改为null

票数 0
EN

Stack Overflow用户

发布于 2017-04-10 03:22:44

如果您希望为"Open Gym“类拥有”Open Gym“类的外键的数据一致性好处,则可以在”讲师“表中添加一个虚拟行。

否则,如果您使instructor.InstructorId为空,那么它也将工作。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43314480

复制
相关文章

相似问题

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