我有一些表需要在 postgresql 中进行级联更新,但我认为我不能使用外键来做到这一点。
简单的版本是我有 4 个对象表和 2 个绑定表:
Table X Table A Table A-B Table B Table B-C Table C
------- -------- --------- ------- --------- -------
x_id a_id x_id b_id x_id c_id
... ... a_id ... b_id ...
... ... b_id ... c_id ...
... ...
在我的绑定表上,我对所有 id 字段(x_id、a_id、b_id)、(x_id、b_id、c_id)都有一个 PK。
如果我更新表 AB 中的 b_id,我希望它更新表 BC 中 x_id 匹配的 b_id。
如果我尝试创建外键约束,它会告诉我
“引用表的给定键没有唯一约束匹配......”
我知道它没有这样做,因为(x_id,b_id)不是唯一的约束,但它不可能,因为我将有多个 c_id 具有相同的 b_id 和 x_id。
希望这是有道理的。
是用触发器做到这一点的唯一方法吗?