Problema:
Quiere encontrar los nombres de las restricciones en una tabla en PostgreSQL.
Ejemplo:
Queremos mostrar los nombres de las restricciones en la tabla student
.
Solución:
SELECT conname, contype FROM pg_catalog.pg_constraint JOIN pg_class t ON t.oid = c.conrelid WHERE t.relname ='student';
Aquí está el resultado:
connombre | contipo |
---|---|
student_age_check | c |
student_pkey | p |
student_personal_number_key | u |
student_country_id_fkey | f |
Discusión:
Para encontrar el nombre de una restricción en PostgreSQL, use la vista pg_constraint
en el pg_catalog
esquema. Únase a la vista pg_catalog.pg_constraint
con la vista pg_class
(JOIN pg_class t ON t.oid = c.conrelid
) y use el relname
columna para filtrar las restricciones por nombre de tabla. En nuestro ejemplo, seleccionamos las restricciones de la tabla student
(WHERE t.relname ='student'
).
Seleccionar columnas conname
y contype
para ver el nombre de la restricción junto con el tipo de restricción. En la columna contype
, el valor 'p' es para una clave principal, 'f' es para una clave externa, 'u' es para UNIQUE
restricción, y 'c' es para CHECK
restricción.
Por ejemplo, puede ver la restricción llamada student_pkey
para la clave principal en el student
mesa. El contype
columna le dice el tipo de restricción, que para la clave principal es p
. El conname
columna en esta vista también le informa sobre la tabla que contiene esta restricción.