我有两个表,我想用单列外键链接它们。正常的亲子类型的东西。我要解决的问题是系统的性质是 child 可以在 parent 存在之前到达( child 知道 parent 的 ID 是什么)。
我不想延迟等待父到达的 child 的插入,速度很重要。但我确实想要一些参照完整性 - 如果子项存在,我不希望能够删除父项。
我假设我无法在 Postgresql 中使用常规外键实现此目的?是写某种触发器的解决方案吗?
最佳答案
您可以使用“可延迟”约束来做到这一点。
create table child (parent_id integer references parent deferrable initially immediate);
然后您可以使用 set constraints
在交易中暂时推迟这样的约束:
start transaction;
set constraints all deferred;
-- Your inserts go here --
commit;
关于postgresql - 是否可以防止删除而不是插入外键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58990472/