制作外键约束DEFERRABLE INITIALLY IMMEDIATE而不是的后果是什么NONDEFERRABLE?
StackOverflow 上的这个答案提到了不再将唯一索引用于可延迟唯一约束所带来的性能影响,我可以与之相关。但是,使外键可延迟有哪些缺点或副作用?
我只能看到一个缺点:早期写入引入的不一致可能在COMMIT发生之前无法检测到。然而,我们的应用程序的存储层将所有 DML 语句延迟到事务结束,因此永远不会读取不一致的 DB 状态(甚至不会被导致它的代码),并且只能在COMMIT任何情况下检测到。
还有其他人吗?
如果重要的话,我们正在考虑在某个表族中制作所有外键DEFERRABLE INITIALLY IMMEDIATE,但只在执行大量相互依赖的插入/更新/的特定作业(大约20 个访问这些表)中延迟它们删除。
TL;DR:我们在制作外键时需要注意DEFERRABLE INITIALLY DEFERRED什么?