CHECK
現在、制約は他のテーブルを参照できません。マニュアル:
現在、
CHECK
式にサブクエリを含めることも、現在の行の列以外の変数を参照することもできません。
1つの方法は、@Wolphによって示されるようなトリガーを使用することです。
クリーンなトリガーのないソリューション :冗長列を追加し、それらを FOREIGN KEY
に含めます 制約 、参照整合性を適用するための最初の選択肢です。詳細な手順を含むdba.SEの関連回答:
- 「2テーブル離れた」制約を適用する
もう1つのオプションは、 IMMUTABLE
を「偽造」することです。 機能 チェックを行い、それをCHECK
で使用します 制約。 Postgresはこれを許可しますが、起こりうる警告に注意してください。 NOT VALID
にするのが最善です 制約。参照:
- ダンプの復元中にすべての制約とテーブルチェックを無効にします