提问者:小点点

MySQL可以允许缺少外键引用吗?


我在MySQL5.7.x数据库中有两个表。 我维护其数据的表A和我只能读取的表B。 我想从表a中的一列定义一个外键关系来引用表B中的一列,问题是表B中被引用的列并不总是具有表a中的列所引用的值。

我不介意B列没有值。 只要关系是出于咨询目的定义的,就可以了。 但是,我试图定义的每个外键关系都要求A中的值也在B中。

没有要求我怎么定义关系? 那就是,我能让它可有可无吗?

我在寻找这个方向,特别是指B中的一个值,但是B不包含那个值,这是可以的。 不是像一个人建议的那样,A中的列是null,不指向B中的任何值。

我在网上搜索过这个问题的答案,但是找不到解决方案。 也许我没有很好地表达搜索词,或者我使用了错误的术语。

我认为MySQL8的not informed选项可以实现这一点,但只有check类型的约束才可能实现这一点。


共1个答案

匿名用户

MySQL中的外键可以在会话级别强制执行,也可以不强制执行(这确实是一个非传统的设计错误):

SET FOREIGN_KEY_CHECKS = 0;
-- Do stuff
SET FOREIGN_KEY_CHECKS = 1;

但这是要么全有要么全无。 在关系数据库设计中,咨询外键并不是一个真正的概念。 乍一看,我看不出它能解决什么问题。