postgresql - 是否可以防止删除但不能使用外键插入?
问题描述
我有两个表,我想用单列外键链接。一个普通的亲子类型的东西。我要解决的问题是系统的性质是孩子可以在父母存在之前到达(孩子知道父母的身份是什么)。
我不想延迟等待父母到达的孩子的插入,速度很重要。但我确实想要一些参照完整性 - 如果孩子存在,我不希望能够删除父母。
我假设我不能用 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;
推荐阅读
- mongodb - 我在尝试运行我的数据库时遇到错误
- python-3.x - 为什么这个 python 函数返回 len=7 而不是 len=6?
- javascript - 无法在 puppeteer-jest 测试框架中解析本地 JSON 数据?
- bash - 如何在要连接的每个文件之间添加新行 (\n)
- node.js - 前后连接问题
- r - 绘制混合效应模型的预测区间
- api - Sharepoint 错误:此项目不支持点赞
- c# - 如何使用 ASP.NET MVC 将 dd/MM/yyyy 日期时间类型存储到数据库中?
- javascript - 切换 Jquery 上的变量,帮助隐藏显示按钮
- android - 当我按下返回时导航片段的问题