sql >> Base de Datos >  >> RDS >> PostgreSQL

RESTRICCIÓN para comprobar los valores de una tabla relacionada de forma remota (mediante unión, etc.)

CHECK las restricciones actualmente no pueden hacer referencia a otras tablas. El manual:

Actualmente, CHECK las expresiones no pueden contener subconsultas ni referirse a variables que no sean columnas de la fila actual.

Una forma es usar un disparador como lo demostró @Wolph.

Una solución limpia y sin desencadenantes :agregue columnas redundantes e inclúyalas en FOREIGN KEY restricciones , que son la primera opción para hacer cumplir la integridad referencial. Respuesta relacionada en dba.SE con instrucciones detalladas:

  • Hacer cumplir las restricciones "a dos mesas de distancia"

Otra opción sería "falsificar" un IMMUTABLE función haciendo la verificación y úsala en un CHECK restricción. Postgres lo permitirá, pero tenga en cuenta las posibles advertencias. Mejor haz que sea un NOT VALID restricción. Ver:

  • Deshabilitar todas las restricciones y comprobaciones de tablas al restaurar un volcado