我在MySQL5.7.x数据库中有两个表。 我维护其数据的表A和我只能读取的表B。 我想从表a中的一列定义一个外键关系来引用表B中的一列,问题是表B中被引用的列并不总是具有表a中的列所引用的值。
我不介意B列没有值。 只要关系是出于咨询目的定义的,就可以了。 但是,我试图定义的每个外键关系都要求A中的值也在B中。
没有要求我怎么定义关系? 那就是,我能让它可有可无吗?
我在寻找这个方向,特别是指B中的一个值,但是B不包含那个值,这是可以的。 不是像一个人建议的那样,A中的列是null,不指向B中的任何值。
我在网上搜索过这个问题的答案,但是找不到解决方案。 也许我没有很好地表达搜索词,或者我使用了错误的术语。
我认为MySQL8的not informed
选项可以实现这一点,但只有check
类型的约束才可能实现这一点。
MySQL中的外键可以在会话级别强制执行,也可以不强制执行(这确实是一个非传统的设计错误):
SET FOREIGN_KEY_CHECKS = 0;
-- Do stuff
SET FOREIGN_KEY_CHECKS = 1;
但这是要么全有要么全无。 在关系数据库设计中,咨询外键并不是一个真正的概念。 乍一看,我看不出它能解决什么问题。