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