PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

CONSTRAINT за проверка на стойности от отдалечено свързана таблица (чрез присъединяване и т.н.)

CHECK ограниченията в момента не могат да препращат към други таблици. Ръководството:

В момента CHECK изразите не могат да съдържат подзаявки, нито да препращат към променливи, различни от колони на текущия ред.

Един от начините е да използвате тригер, както е демонстрирано от @Wolph.

Чисто решение без тригери :добавете излишни колони и ги включете в FOREIGN KEY ограниченияте , които са първият избор за налагане на референтната цялост. Свързан отговор на dba.SE с подробни инструкции:

  • Налагане на ограничения „на две маси разстояние“

Друг вариант би бил да „фалшифицирате“ IMMUTABLE функцията правите проверката и я използвайте в CHECK ограничение. Postgres ще позволи това, но имайте предвид възможните предупреждения. Най-добре направете това NOT VALID ограничение. Вижте:

  • Деактивирайте всички ограничения и проверки на таблици, докато възстановявате дъмп


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Защо postgres не използва индекса в моята заявка

  2. Как да направя актуализация + присъединяване в PostgreSQL?

  3. Сортиране на елементи от масива

  4. Как да работя с PGpoint за геолокация, използвайки PostgreSQL?

  5. PostgreSQL агент в SQL Standard комитет отново