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 を更新する場合、x_id が一致するテーブル BC の b_id を更新する必要があります。
外部キー制約を作成しようとすると、
「参照されるテーブルの指定されたキーに一致する一意の制約はありません...」
(x_id,b_id) は一意の制約ではないため、それを行っていないことは理解していますが、同じ b_id と x_id を持つ複数の c_id があるため、それはできません。
うまくいけば、これは理にかなっています。
トリガーでこれを行う唯一の方法はありますか?