我刚刚在生产中遇到一个表,它有 4 个外键约束。其中两个约束与另外两个完全相同。
即
fk1(a_id) references a(id)
fk2(a_id) references a(id)
fk3(b_id) references b(id)
fk4(b_id) references b(id)
我以前从未见过这种情况……我觉得这是完全错误的,我的直觉是这里一定有性能问题(尤其是插入到该表中)。在这个例子中,数据库是 PostGres,但我对人们认为的一般行为很感兴趣。
如果有人经历过这样的外键,我也会感兴趣 - 特别是因为我会建议删除重复项!
最佳答案
这根本没有任何好处,而且是多余的。实际上,插入或更新 a_id 需要检查的 FK 数量是原来的两倍。
我说的是删除重复项。
如果一个有级联而另一个没有,那么非级联的就是重复的(可能不适用于 PostGres)
关于sql - 重复的外键约束 - 支持或反对的原因,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2144568/