gpt4 book ai didi

MySQL:引用两个父项的外键

转载 作者:行者123 更新时间:2023-11-29 02:37:54 25 4
gpt4 key购买 nike

有一个有趣的情况:我有一个从 a.name(子表)到 b.name(父表)的外键。 b.name 没有唯一约束,因此它可能包含重复值。

如果我将名称“bob”放入 b.name 两次,然后将其放入 a.name,我将无法再删除或更新 either表 b 中的 'bob'。在这两种情况下,它都会提示通过删除/更新表 b 中的行,将 a.name 链接到 b.name 的 FKey 将失败。

现在这说得通了,但我希望能够告诉 FKey 仅当表 b 中没有其他实例“bob”时才会失败。因此,如果我在 b.name 中有多个“bob”实例,我可以更改/删除除最后一个之外的任何实例。

[请注意,在 b.name 上做显而易见的事情并添加唯一约束是行不通的,因为它会在我没有编写的应用程序中导致“未定义的行为”]

有什么想法吗?

最佳答案

直接来自 http://dev.mysql.com/doc/refman/5.1/en/innodb-foreign-key-constraints.html

...此外,MySQL 和 InnoDB 要求对引用的列进行索引以提高性能。但是,系统不强制要求引用的列是唯一的或声明为 NOT NULL。对非唯一键或包含 NULL 值的键的外键引用的处理没有为 UPDATE 或 DELETE CASCADE 等操作很好地定义。建议您使用仅引用 UNIQUE 和 NOT NULL 键的外键....

因此,让您的 FK 与唯一值相关联,否则谁说了算?

关于MySQL:引用两个父项的外键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2202745/

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