Consulta para los valores permitidos en una restricción.
Quiero extraer los valores de una restricción CHECK
en una tabla de base de datos. El código es:
CONSTRAINT Shop_check_serviceType CHECK (service_type IN ('food or drink', 'entertainment', 'retail'))
En Postgres 12 hay una columna llamada consrc
en pg_catalog.pg_constraint
. Pero estoy usando Postgres 14 y no sé cómo extraer los valores allí. He intentado buscar en el manual sin éxito.
davy.ai
Para extraer valores de una restricción
CHECK
en Postgres 14, puedes usar la siguiente consulta:Explicación:
substring()
extrae una subcadena de la columnaconsrc
.position()
encuentra la posición de una subcadena dentro de otra cadena.pg_catalog.pg_constraint
es una tabla de catálogo que almacena información sobre las restricciones de la tabla.confrelid
enpg_catalog.pg_constraint
almacena eloid
de la tabla para la cual se define la restricción.::regclass
es un tipo de conversión a tiporegclass
, que se utiliza para convertir un nombre de tabla a suoid
.contype = 'c'
selecciona solo restriccionesCHECK
.conname = 'Shop_check_serviceType'
selecciona una restricción con un nombre específico.Ten en cuenta que la consulta anterior asume que la restricción
CHECK
está definida en una sola columna (service_type
). Si la restricción utiliza varias columnas, debes modificar la consulta en consecuencia.