35.6. attributes #

A visão attributes contém informações sobre os atributos dos tipos de dados compostos definidos no banco de dados. (Note que a visão não fornece informações sobre colunas de tabela, que às vezes são chamadas de atributos em contextos do PostgreSQL.) São somente mostrados os atributos aos quais o usuário corrente tem acesso (por ser o dono, ou por ter algum privilégio no tipo de dados).

Tabela 35.4. Colunas de attributes

Coluna Tipo de dados

Descrição

udt_catalog sql_identifier

Nome do banco de dados que contém o tipo de dados (sempre o banco de dados corrente)

udt_schema sql_identifier

Nome do esquema que contém o tipo de dados

udt_name sql_identifier

Nome do tipo de dados

attribute_name sql_identifier

Nome do atributo

ordinal_position cardinal_number

Posição ordinal do atributo dentro do tipo de dados (contado a partir de 1)

attribute_default character_data

Expressão padrão do atributo

is_nullable yes_or_no

YES se o atributo puder ser nulo, NO se for conhecido por não poder ser nulo.

data_type character_data

Tipo de dados do atributo, se for um tipo de dados integrado, ou ARRAY se for alguma matriz (neste caso, veja a visão element_types, caso contrário USER-DEFINED (neste caso, o tipo de dados é identificado em attribute_udt_name e colunas associadas).

character_maximum_length cardinal_number

Se a coluna data_type identificar um tipo de dados de cadeia de caracteres ou de bits, o comprimento máximo declarado; nulo para todos os outros tipos de dados, ou se não foi declarado nenhum comprimento máximo.

character_octet_length cardinal_number

Se a coluna data_type identificar um tipo de dados de caractere, o comprimento máximo possível em octetos (bytes) do Datum; nulo para todos os outros tipos de dados. O comprimento máximo do octeto depende do comprimento máximo do caractere declarado (veja acima), e da codificação do servidor.

character_set_catalog sql_identifier

Aplica-se a uma funcionalidade não disponível no PostgreSQL

character_set_schema sql_identifier

Aplica-se a uma funcionalidade não disponível no PostgreSQL

character_set_name sql_identifier

Aplica-se a uma funcionalidade não disponível no PostgreSQL

collation_catalog sql_identifier

Nome do banco de dados que contém a ordenação do atributo (sempre o banco de dados corrente), ou nulo se o valor padrão ou o tipo de dados do atributo não for ordenável

collation_schema sql_identifier

Nome do esquema que contém a ordenação do atributo, ou nulo se o valor padrão ou o tipo de dados do atributo não for ordenável

collation_name sql_identifier

Nome da ordenação do atributo, ou nulo se o valor padrão ou o tipo de dados do atributo não for ordenável

numeric_precision cardinal_number

Se a coluna data_type identificar um tipo de dados numérico, esta coluna irá conter a precisão (declarada ou implícita) do tipo de dados para este atributo. A precisão indica o número de dígitos significativos. Pode ser expresso em termos decimais (base 10) ou binários (base 2), conforme especificado na coluna numeric_precision_radix. Para todos os outros tipos de dados, é nulo.

numeric_precision_radix cardinal_number

Se a coluna data_type identificar um tipo de dados numérico, esta coluna irá indicar em qual base os valores das colunas numeric_precision e numeric_scale são expressos. O valor é 2 ou 10. Para todos os outros tipos de dados, é nulo.

numeric_scale cardinal_number

Se a coluna data_type identificar um tipo de dados numérico exato, esta coluna irá conter a escala (declarada ou implícita) do tipo de dados para este atributo. A escala indica o número de dígitos significativos à direita do ponto decimal. Pode ser expresso em termos decimais (base 10) ou binários (base 2), conforme especificado na coluna numeric_precision_radix. Para todos os outros tipos de dados, é nulo.

datetime_precision cardinal_number

Se a coluna data_type identificar uma data, hora, carimbo de data/hora, ou tipo de dados de intervalo, esta coluna irá conter a precisão dos segundos fracionários (declarados ou implícitos) do tipo de dados para este atributo, ou seja, o número de dígitos decimais mantidos após o ponto decimal no valor dos segundos. Para todos os outros tipos de dados, é nulo.

interval_type character_data

Se a coluna data_type identificar um tipo de dados de intervalo, esta coluna irá conter a especificação de quais campos os intervalos incluem para este atributo, por exemplo, YEAR TO MONTH, DAY TO SECOND, etc. Se não tiver sido especificada nenhuma restrição de campo (ou seja, o intervalo aceita todos os campos), e para todos os outros tipos de dados, será nulo.

interval_precision cardinal_number

Aplica-se a uma funcionalidade não disponível no PostgreSQL (veja datetime_precision para obter a precisão dos segundos fracionários dos atributos do tipo de dados de intervalo)

attribute_udt_catalog sql_identifier

Nome do banco de dados onde o tipo de dados do atributo está definido (sempre o banco de dados corrente)

attribute_udt_schema sql_identifier

Nome do esquema onde o tipo de dados do atributo está definido

attribute_udt_name sql_identifier

Nome do tipo de dados do atributo

scope_catalog sql_identifier

Aplica-se a uma funcionalidade não disponível no PostgreSQL

scope_schema sql_identifier

Aplica-se a uma funcionalidade não disponível no PostgreSQL

scope_name sql_identifier

Aplica-se a uma funcionalidade não disponível no PostgreSQL

maximum_cardinality cardinal_number

Sempre nulo, porque as matrizes sempre têm cardinalidade máxima ilimitada no PostgreSQL

dtd_identifier sql_identifier

Identificador do descritor do tipo de dados do atributo, único entre os descritores de tipo de dados pertencentes ao tipo de dados composto. Serve principalmente para realizar junções com outras instâncias desses identificadores. (O formato específico do identificador não está definido e não há garantia de que permanecerá o mesmo em versões futuras.)

is_derived_reference_attribute yes_or_no

Aplica-se a uma funcionalidade não disponível no PostgreSQL


Veja também columns, uma visão estruturada de forma semelhante, para obter mais informações sobre algumas das colunas.

Exemplo 35.3. Exemplo do tradutor

Atributos de tipos de dados compostos

Uso do esquema de informações para mostrar informações sobre os atributos dos tipos de dados compostos definidos no banco de dados cristina da usuária cristina.

CREATE TYPE complexo AS (
    r       double precision,
    i       double precision
);
CREATE TYPE
CREATE TYPE item_inventário AS (
    nome            text,
    id_fornecedor   integer,
    preco           numeric
);
CREATE TYPE
SELECT udt_catalog, udt_schema, udt_name, attribute_name,
ordinal_position, attribute_default, is_nullable, data_type
FROM information_schema.attributes
ORDER BY udt_catalog, udt_schema, udt_name, ordinal_position\gx

-[ RECORD 1 ]-----+-----------------
udt_catalog       | cristina
udt_schema        | public
udt_name          | complexo
attribute_name    | r
ordinal_position  | 1
attribute_default |
is_nullable       | YES
data_type         | double precision
-[ RECORD 2 ]-----+-----------------
udt_catalog       | cristina
udt_schema        | public
udt_name          | complexo
attribute_name    | i
ordinal_position  | 2
attribute_default |
is_nullable       | YES
data_type         | double precision
-[ RECORD 3 ]-----+-----------------
udt_catalog       | cristina
udt_schema        | public
udt_name          | item_inventário
attribute_name    | nome
ordinal_position  | 1
attribute_default |
is_nullable       | YES
data_type         | text
-[ RECORD 4 ]-----+-----------------
udt_catalog       | cristina
udt_schema        | public
udt_name          | item_inventário
attribute_name    | id_fornecedor
ordinal_position  | 2
attribute_default |
is_nullable       | YES
data_type         | integer
-[ RECORD 5 ]-----+-----------------
udt_catalog       | cristina
udt_schema        | public
udt_name          | item_inventário
attribute_name    | preco
ordinal_position  | 3
attribute_default |
is_nullable       | YES
data_type         | numeric