外键可以引用非唯一索引吗?
我认为外键意味着单行必须引用单行,但是我正在查看某些表,但事实并非如此。表1在表2的列2上有一个具有外键约束的列1,但是在表2中有很多记录在列2中具有相同的值。在column2上也有非唯一索引。这是什么意思?外键约束是否仅表示至少一条记录必须存在,且在正确的列中具有正确的值?我认为这意味着必须有一个这样的记录(不确定空值是否适合图片,但目前我对此不太担心)。
更新:显然,此行为特定于MySQL,这是我所使用的,但我没有在最初的问题中提及它。
回答:
从MySQL文档:
InnoDB允许外键约束引用非唯一键。这是对标准SQL的InnoDB扩展。
但是,出于实际原因,要避免在引用表的非唯一列上使用外键。也就是说,在这种情况下“ ON DELETE CASCADE”的语义应该是什么?
该文档进一步建议:
对非唯一键或包含NULL值的键的外键引用的处理没有很好的定义(…)。建议您使用仅引用UNIQUE(包括PRIMARY)和NOT NULL键的外键。
以上是 外键可以引用非唯一索引吗? 的全部内容, 来源链接: utcz.com/qa/401215.html