O catálogo pg_constraint armazena restrições de verificação, chave primária, unicidade e chave estrangeira em tabelas (As restrições de coluna não são tratadas de forma especial, porque toda restrição de coluna equivale a alguma restrição de tabela). As restrições de não-nulo são representadas no catálogo pg_attribute.
As restrições de verificação em domínios também são armazenadas neste catálogo.
Tabela 42-10. Colunas de pg_constraint
| Nome | Tipo | Referencia | Descrição |
|---|---|---|---|
| conname | name | Nome da restrição (não necessariamente única!) | |
| connamespace | oid | pg_namespace.oid | OID do espaço de nomes que contém a restrição. |
| contype | char | c = restrição de verificação; f = restrição de chave estrangeira; p = restrição de chave primária; u = restrição de unicidade. | |
| condeferrable | bool | A restrição é postergável? | |
| condeferred | bool | A restrição é postergada por padrão? | |
| conrelid | oid | pg_class.oid | Tabela onde esta restrição se encontra; 0 zero se não for uma restrição de tabela |
| contypid | oid | pg_type.oid | Domínio onde esta restrição se encontra; 0 se não for uma restrição de domínio |
| confrelid | oid | pg_class.oid | Se for uma chave estrangeira, a tabela referenciada; senão 0 |
| confupdtype | char | Código da ação de atualização da chave estrangeira | |
| confdeltype | char | Código da ação de exclusão da chave estrangeira | |
| confmatchtype | char | Tipo de correspondência da chave estrangeira | |
| conkey | int2[] | pg_attribute.attnum | Se for uma restrição de tabela, a lista de colunas que a restrição abrange |
| confkey | int2[] | pg_attribute.attnum | Se for uma chave estrangeira, a lista de colunas referenciadas |
| conbin | text | Se for uma restrição de verificação, a representação interna da expressão | |
| consrc | text | Se for uma restrição de verificação, a representação humanamente legível da expressão |
Nota: consrc não é atualizada quando os objetos referenciados mudam; por exemplo, não acompanha a mudança dos nomes das colunas. Em vez de confiar neste campo, é melhor utilizar pg_get_constraintdef() para obter a definição da restrição de verificação.
Nota: pg_class.relchecks deve condizer com o número de entradas de restrição de verificação encontradas nesta tabela para uma determinada relação.