sql >> Database >  >> RDS >> PostgreSQL

CONSTRAINT om waarden uit een op afstand gerelateerde tabel te controleren (via join etc.)

CHECK beperkingen kunnen momenteel niet verwijzen naar andere tabellen. De handleiding:

Momenteel CHECK expressies kunnen geen subquery's bevatten en mogen niet verwijzen naar andere variabelen dan kolommen van de huidige rij.

Een manier is om een ​​trigger te gebruiken zoals gedemonstreerd door @Wolph.

Een schone oplossing zonder triggers :voeg overbodige kolommen toe en neem ze op in FOREIGN KEY beperkingen , die de eerste keuze zijn om referentiële integriteit af te dwingen. Gerelateerd antwoord op dba.SE met gedetailleerde instructies:

  • Restricties opleggen "twee tafels verder"

Een andere optie zou zijn om een IMMUTABLE te "faken" functie doe de controle en gebruik die in een CHECK beperking. Postgres staat dit toe, maar houd rekening met mogelijke voorbehouden. Maak daar best een NOT VALID van beperking. Zie:

  • Schakel alle beperkingen en tabelcontroles uit tijdens het herstellen van een dump


  1. Een Django-app implementeren op AWS Elastic Beanstalk

  2. Hoe een gegevenstabel invoegen in de SQL Server-databasetabel?

  3. SQLite-index

  4. ontbrekende FROM-clausule voor tabel Grupo cakephp