【发布时间】:2020-09-22 16:40:10
【问题描述】:
我目前正在为父表开发一个触发器函数,它应该对子表上的相关行执行检查,该子表具有已更新的父表行的外键。
我做了小 dbfiddle 设置我的情况:
https://www.db-fiddle.com/f/sV8f9F7Lg6R6HE89nXNhhV/4
我的数据模型包含给定实体注册的实例,其中包含给定条目的不同版本。所以我的情况是,我拥有国家、纳尼亚和机场纳尼亚机场。纳尼亚机场有一个国家的外键,表明它是纳尼亚的一部分。
每个机场都有一个检查功能,确保子表与其父表的生命周期一致,这意味着只要纳尼亚不存在,纳尼亚机场就不能存在......
第一个查询显示的是哪个,但我如何以另一种方式进行有效的检查?目前我可以将国家/地区更改为国外 og 其孩子的寿命使孩子成为孤儿?
我有一个想法为每个父子关系创建一个触发器,但它似乎有点繁重,我只对受影响的孩子做这个检查感兴趣,而不是每个孩子?
我怎么知道某事依赖于这一行,并执行我想要的检查,反之亦然,什么都不依赖于这个给定的行?
【问题讨论】:
-
我不认为你的小提琴正在做你期望它做的事情。尝试从 airport_registration 中选择 * - entity_id 为 NULL 是否正确?事实上,我看不出您的数据如何将任何机场与任何国家联系起来; airport_registration 是唯一一个具有 FK 到机场的表,并且 FK 列 (airport_registration.entity_id) 始终为 NULL。
-
您说的是国家和机场。为什么你有4张桌子?这些
…registration是怎么回事?你想写什么触发器? -
@Bergi 我添加了一些详细说明
-
@AdamKG 我添加了更多 mvp 示例
-
@Lamda 谢谢,现在这更有意义了。我不确定是否有一个好的解决方案
标签: sql postgresql temporal-database