【发布时间】:2011-01-13 06:00:07
【问题描述】:
有一个有趣的情况:我有一个从 a.name(子表)到 b.name(父表)的外键。 b.name 对其没有唯一约束,因此它可能包含重复值。
如果我将名称“bob”放入 b.name 两次,然后将其放入 a.name,我将无法再删除或更新 either 的实例表 b 中的“鲍勃”。在这两种情况下,它都会抱怨通过删除/更新表 b 中的行,将 a.name 链接到 b.name 的 FKey 将失败。
现在这有点道理,但我希望能够告诉 FKey 只有在表 b 中没有 no 其他实例 'bob' 时才会失败。因此,如果我在 b.name 中有多个 'bob' 实例,我可以更改/删除除最后一个之外的任何实例。
[请注意,在 b.name 上添加唯一约束是行不通的,因为它会在我没有编写的应用程序中导致“未定义的行为”]
有什么想法吗?
【问题讨论】:
标签: mysql foreign-keys