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.