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

Cómo encontrar el nombre de una restricción en PostgreSQL

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.