gpt4 book ai didi

sql - 如何检查外键是否设置为不存在的主键?

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

有时我在使用 BD At Work 时遇到问题。通常是当我尝试在 session 关闭的情况下恢复或更新 Java 中的表时(著名的 LazyInitializatioException )。最后,有时问题是存在指向不存在的主键索引的值的外键。发生这种情况时,惰性实体无法正确加载。

那么,有没有办法检查表数据是否将外键索引设置为不存在的主键?

对于单个列来说很容易。但我指的是具有大约 10 或 20 个外键的表。

我正在使用 postgres。如果那是特别针对它的答案,那就更好了。 =]

抱歉我的英语不好(不是母语)。

最佳答案

我通常使用这样的查询

SELECT * FROM my_table WHERE fk_field NOT IN (SELECT id FROM related_table);

它通常工作正常;我不确定是否有更适合这项任务的东西(如果你使用 ORM 和/或总是 DELETE .. CASCADE,你不会经常遇到这种问题)..

更新

当然,您可以使用它一次直接查询多个 fk 字段:

SELECT * FROM my_table WHERE fk_field NOT IN (SELECT id FROM related_table)
OR fk_field2 NOT IN (SELECT id FROM related_table2)
OR fk_field3 NOT IN (SELECT id FROM related_table3);

..等..

关于sql - 如何检查外键是否设置为不存在的主键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13315212/

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