rau*_*jcs 2 sql postgresql foreign-keys primary-key
有时我在使用 BD At Work 时遇到问题。通常是当我尝试在会话关闭的情况下恢复或更新 Java 中的表时(著名的 LazyInitializatioException )。最后,有时问题是存在指向不存在的主键索引的值的外键。当发生这种情况时,惰性实体无法正确加载。
那么,有没有办法检查表数据是否将外键索引设置为不存在的主键?
对于单个列来说很容易。但我的意思是对于具有大约 10 或 20 个外键的表。
我正在使用 postgres。如果这是一个专门针对它的答案,那就更好了。=]
抱歉我的英语不好(不是母语)。
我通常使用类似的查询
SELECT * FROM my_table WHERE fk_field NOT IN (SELECT id FROM related_table);
Run Code Online (Sandbox Code Playgroud)
而且通常工作得很好;我不确定是否有更适合此任务的东西(如果您使用 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);
Run Code Online (Sandbox Code Playgroud)
..ETC..
| 归档时间: |
|
| 查看次数: |
3466 次 |
| 最近记录: |