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.