我在MySQL 5.7.x数据库中有两个表。我维护其数据的表A和我只能读取的表B。我想从表A中的列定义一个外键关系,以引用表B中的列。问题是表B中的引用列并不总是具有表A中的列所引用的值。
我不介意B的列没有值。只要为咨询目的定义了关系,就可以。但是,每个外键关系我都尝试从A定义requires的值也要在B中。
我如何在没有要求的情况下定义关系?也就是说,我可以让它为可选吗?
我已经在网上搜索了答案,但是找不到解决方案。也许我对搜索词的措辞不好,或者我使用了错误的术语。
[我认为这可以通过MySQL 8的NOT ENFORCED
选项来实现,但是只有在CHECK
类型的约束下才可以实现。
MySQL中的外键可以是enforced or not at session level(这确实是非传统的,恕我直言,这是设计错误):
SET FOREIGN_KEY_CHECKS = 0;
-- Do stuff
SET FOREIGN_KEY_CHECKS = 1;
但是什么都不是。咨询外键并不是关系数据库设计中的真正概念。乍一看,我看不出它将解决什么问题。