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