gpt4 book ai didi

mysql - 使用 MySql 从 varchar 到枚举字段的外键约束

转载 作者:行者123 更新时间:2023-11-29 06:21:51 25 4
gpt4 key购买 nike

假设我的 MySql 数据库中已有一个表。该表有一个定义如下的字段:

`field_a` enum('value_1', 'value_2', 'value_3')

现在我想用 field_b 定义另一个表. field_b应该引用 field_a由于外键约束。定义 field_b作为确切的 enum输入 field_a接缝是多余的。有没有办法制作field_b类型 varchar并且仍然引用 enum为了确保只有适当的有效值 enum都写进去了吗?

最佳答案

据我所知,从理论和实践来看,现在不可能了。另外,official documentationFOREIGN KEY 状态:

Corresponding columns in the foreign key and the referenced key must have similar data types.

现在,尽管 ENUMVARCHAR 都被归类为 string types ,它们不被视为相似的数据类型。 (至少对于这个目的来说足够相似)。我通过实验发现与 ENUM 相似的数据类型只有一种是 SET。但即使在使用引用 ENUM-to-ENUMENUM-to-SET 可能值列表的情况下在父表和子表中不必相同。所以我怀疑即使您可以使用 VARCHAR,它也不会以任何方式帮助您检查或强制值的完整性。

我建议使用查找表而不是 ENUM。它是更灵活的解决方案,并且表的元数据中的冗余更少。

关于mysql - 使用 MySql 从 varchar 到枚举字段的外键约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32943272/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com