PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Como encontrar o nome de uma restrição no PostgreSQL

Problema:


Você deseja encontrar os nomes das restrições em uma tabela no PostgreSQL.

Exemplo:


Queremos exibir os nomes das restrições na tabela student .

Solução:

SELECT conname, contype
FROM pg_catalog.pg_constraint
JOIN pg_class t ON t.oid = c.conrelid
WHERE t.relname ='student';

Aqui está o resultado:
conname contipo
student_age_check c
aluno_pkey p
aluno_personal_number_key u
student_country_id_fkey f

Discussão:


Para encontrar o nome de uma restrição no PostgreSQL, use a visualização pg_constraint no pg_catalog esquema. Junte-se à visualização pg_catalog.pg_constraint com a visualização pg_class (JOIN pg_class t ON t.oid = c.conrelid ) e use o relname coluna para filtrar as restrições pelo nome da tabela. Em nosso exemplo, selecionamos as restrições da tabela student (WHERE t.relname ='student' ).

Selecione as colunas conname e contype para ver o nome da restrição junto com o tipo de restrição. Na coluna contype , o valor 'p' é para uma chave primária, 'f' é para uma chave estrangeira, 'u' é para o UNIQUE restrição, e 'c' é para o CHECK limitação.

Por exemplo, você pode ver a restrição chamada student_pkey para a chave primária no student tabela. O contype coluna informa o tipo de restrição, que para a chave primária é p . O conname coluna nesta exibição também informa sobre a tabela que contém essa restrição.