CHECK ограниченията в момента не могат да препращат към други таблици. Ръководството:
В момента
CHECKизразите не могат да съдържат подзаявки, нито да препращат към променливи, различни от колони на текущия ред.
Един от начините е да използвате тригер, както е демонстрирано от @Wolph.
Чисто решение без тригери :добавете излишни колони и ги включете в FOREIGN KEY ограниченияте , които са първият избор за налагане на референтната цялост. Свързан отговор на dba.SE с подробни инструкции:
- Налагане на ограничения „на две маси разстояние“
Друг вариант би бил да „фалшифицирате“ IMMUTABLE функцията правите проверката и я използвайте в CHECK ограничение. Postgres ще позволи това, но имайте предвид възможните предупреждения. Най-добре направете това NOT VALID ограничение. Вижте:
- Деактивирайте всички ограничения и проверки на таблици, докато възстановявате дъмп