外键返回空结果集

Posted

技术标签:

【中文标题】外键返回空结果集【英文标题】:Foreign key returning empty result set 【发布时间】:2020-05-29 15:52:00 【问题描述】:

我创建了一个外键来链接两个表:

    我的用户地址(外键) 用户登录详细信息(主键)。

但是,当我创建外键时,用户输入的任何详细信息都不会保存在地址表中。而当地址表没有外键时,它将输入插入地址表就可以了。

我对 mysql 没有太多经验,所以错误可能是微不足道的,但是我自己找不到解决方案。我正在使用 php 程序。

这是我的数据库示例:

包含外键的地址表:

1   id Primary          int(11)         No  None        AUTO_INCREMENT      
2   address_fk Index    int(11)         No  None            
3   address_line_one    varchar(25) utf8_general_ci     No  None                
4   address_line_two    varchar(25) utf8_general_ci     No  None    

带有主键的用户详细信息:

1   id Primary      int(11)         No             None     AUTO_INCREMENT      
2   user_email      varchar(320)    utf8_general_ci     No  None            
3   user_password   char(60)        utf8_general_ci     No  None    

任何指导将不胜感激。

【问题讨论】:

请发布您的表格的数据和结构示例 我已经在相关表中添加了,除了一组用户登录的详细信息之外,我目前在这些表中没有任何数据。 只有表格的 CREATE TABLE 脚本提供所需的信息 - 请替换表格结构。并添加一些示例数据(作为 INSERT INTO 脚本)和该数据所需的结果。 【参考方案1】:

子表中的外键必须引用父表中现有的主键列。如果您的主键是 User Details 表中的 ID 列,那么您的外键将是 AddressesID 列/em> 表,因为它将指向父表中的 ID 列。

您当前的设置将 address_fk 列指示为外键;但是,User Details 表中没有它可以指向的这样的列。

【讨论】:

以上是关于外键返回空结果集的主要内容,如果未能解决你的问题,请参考以下文章

Doctrine 存储库返回空结果集

SPARQL 查询返回空结果集

Postgres检查jsonb数组是不是不包含值返回空结果集

用于返回结果集的 where 子句中的 case 语句包含空值

从带有 HAVING 子句的 MySQL 视图中选择返回空结果集

在 select 中使用 regexp_matches 查询返回空结果集