O catálogo pg_attribute armazena informações sobre as colunas das tabelas. Existe exatamente uma linha em pg_attribute para cada coluna de cada tabela do banco de dados (Também existem entradas de atributo para os índices, e todos os objetos que possuem entrada em pg_class).
O termo atributo equivale a coluna, sendo usado por motivos históricos.
Tabela 43-7. Colunas do catálogo pg_attribute
Nome | Tipo | Referencia | Descrição |
---|---|---|---|
attrelid | oid | pg_class .oid | Tabela que esta coluna pertence |
attname | name | Nome da coluna | |
atttypid | oid | pg_type .oid | Tipo de dado desta coluna |
attstattarget | int4 | attstattarget controla o nível de detalhe das estatísticas acumuladas para esta coluna pelo comando ANALYZE . O valor zero indica que não deve ser coletada nenhuma estatística. Um valor negativo diz para usar o padrão do sistema para estatísticas. O significado exato dos valores positivos é dependente do tipo de dado. Para os tipos de dado escalares, attstattarget é tanto o número de "valores mais comuns" a serem coletados, quanto o número de barras do histograma a serem criadas | |
attlen | int2 | Cópia de pg_type.typlen do tipo desta coluna | |
attnum | int2 | Número da coluna. As colunas comuns são numeradas a partir de um. As colunas do sistema, tal como oid, possuem números negativos (arbitrários) | |
attndims | int4 | Número de dimensões, se a coluna for de um tipo matriz; senão zero (Atualmente o número de dimensões de uma matriz não é imposto, portanto qualquer valor diferente de zero significa de fato "isto é uma matriz") | |
attcacheoff | int4 | Sempre -1 no armazenamento, mas quando carregado na memória em um descritor de linha pode ser atualizado para guardar o deslocamento do atributo na linha. | |
atttypmod | int4 | atttypmod registra dados específicos do tipo, fornecidos na hora da criação da tabela (por exemplo, o comprimento máximo de uma coluna varchar). É passado para as funções de entrada específicas dos tipos, e para as funções de imposição de comprimento. Geralmente o valor é -1 para os tipos que não necessitam de atttypmod | |
attbyval | bool | Cópia de pg_type.typbyval do tipo desta coluna | |
attstorage | char | Normalmente uma cópia de pg_type.typstorage do tipo desta coluna. Para os tipos de dado fatiáveis (TOAST), pode ser alterado após a criação da coluna para controlar a política de armazenamento | |
attisset | bool | Se for verdade, este atributo é um conjunto. Neste caso, o que realmente é armazenado no atributo é o OID da linha no catálogo pg_proc. A linha pg_proc contém a cadeia de caracteres da consulta que define este conjunto, ou seja, a consulta a ser executada para obter o conjunto. Portanto, atttypid (veja acima) se refere ao tipo retornado por esta consulta, mas o comprimento real deste atributo é o comprimento (tamanho) de um oid; ao menos esta é a teoria. Provavelmente atualmente existem muitas diferenças | |
attalign | char | Cópia de pg_type.typalign do tipo desta coluna | |
attnotnull | bool | Representa uma restrição de não-nulo. É possível modificar esta coluna para habilitar ou desabilitar a restrição | |
atthasdef | bool | Indica se esta coluna possui um valor padrão e, neste caso, existe uma entrada correspondente no catálogo pg_attrdef que realmente define o valor | |
attisdropped | bool | Indica se esta coluna foi removida e, portanto, não é mais válida. Uma coluna removida continua presente na tabela, mas é ignorada pelo analisador e, portanto, não pode ser acessada via SQL | |
attislocal | bool | Indica se a coluna é definida localmente na relação. Deve ser observado que a coluna pode ser definida localmente e herdada simultaneamente. | |
attinhcount | int4 | Número de ancestrais diretos que a coluna possui. Uma coluna com um número de ancestrais diferente de zero não pode ser removida nem renomeada. |