A visão element_types contém os descritores do tipo de dado dos elementos das matrizes. Quando uma coluna de tabela, domínio, parâmetro de função ou valor retornado por uma função é definido como sendo do tipo matriz, a visão do esquema de informações respectiva somente contém ARRAY na coluna data_type. Para obter informações sobre o tipo do elemento da matriz pode ser feita a junção da visão respectiva com esta visão. Por exemplo, para mostrar as colunas da tabela com os tipos de dado e tipos dos elementos da matriz, se aplicável, pode ser executado:
SELECT c.column_name, c.data_type, e.data_type AS element_type FROM information_schema.columns c LEFT JOIN information_schema.element_types e ON ((c.table_catalog, c.table_schema, c.table_name, 'TABLE', c.dtd_identifier) = (e.object_catalog, e.object_schema, e.object_name, e.object_type, e.array_type_identifier)) WHERE c.table_schema = '...' AND c.table_name = '...' ORDER BY c.ordinal_position;
Esta visão somente inclui os objetos que o usuário corrente pode acessar, seja por ser o dono ou por possuir algum privilégio. [1]
Tabela 30-14. Colunas de element_types
Nome | Tipo de dado | Descrição |
---|---|---|
object_catalog | sql_identifier | Nome do banco de dados que contém o objeto que utiliza a matriz sendo descrita (sempre o banco de dados corrente) |
object_schema | sql_identifier | Nome do esquema que contém o objeto que utiliza a matriz sendo descrita |
object_name | sql_identifier | Nome do objeto que utiliza a matriz sendo descrita |
object_type | character_data | O tipo do objeto que utiliza a matriz sendo descrita: um entre TABLE (a matriz é utilizada por uma coluna desta tabela), DOMAIN (a matriz é utilizada por este domínio), ROUTINE (a matriz é utilizada pelo tipo de dado de um parâmetro ou do valor retornado, desta função). |
array_type_identifier | sql_identifier | O identificador do descritor do tipo de dado da matriz sendo descrita. Utilizado para fazer junção com as colunas dtd_identifier de outras visões do esquema de informações. |
data_type | character_data | Tipo de dado dos elementos da matriz, se for um tipo nativo, senão USER-DEFINED (neste caso, o tipo é identificado em udt_name e nas colunas associadas). |
character_maximum_length | cardinal_number | Sempre nulo, uma vez que esta informação não se aplica a tipos de dado de elementos de matriz no PostgreSQL |
character_octet_length | cardinal_number | Sempre nulo, uma vez que esta informação não se aplica a tipos de dado de elementos de matriz no PostgreSQL |
character_set_catalog | sql_identifier | Se aplica a uma funcionalidade não disponível no PostgreSQL |
character_set_schema | sql_identifier | Se aplica a uma funcionalidade não disponível no PostgreSQL |
character_set_name | sql_identifier | Se aplica a uma funcionalidade não disponível no PostgreSQL |
collation_catalog | sql_identifier | Se aplica a uma funcionalidade não disponível no PostgreSQL |
collation_schema | sql_identifier | Se aplica a uma funcionalidade não disponível no PostgreSQL |
collation_name | sql_identifier | Se aplica a uma funcionalidade não disponível no PostgreSQL |
numeric_precision | cardinal_number | Sempre nulo, uma vez que esta informação não se aplica a tipos de dado de elementos de matriz no PostgreSQL |
numeric_precision_radix | cardinal_number | Sempre nulo, uma vez que esta informação não se aplica a tipos de dado de elementos de matriz no PostgreSQL |
numeric_scale | cardinal_number | Sempre nulo, uma vez que esta informação não se aplica a tipos de dado de elementos de matriz no PostgreSQL |
datetime_precision | cardinal_number | Sempre nulo, uma vez que esta informação não se aplica a tipos de dado de elementos de matriz no PostgreSQL |
interval_type | character_data | Sempre nulo, uma vez que esta informação não se aplica a tipos de dado de elementos de matriz no PostgreSQL |
interval_precision | character_data | Sempre nulo, uma vez que esta informação não se aplica a tipos de dado de elementos de matriz no PostgreSQL |
domain_default | character_data | Ainda não implementado |
udt_catalog | sql_identifier | Nome do banco de dados onde o tipo de dado dos elementos está definido (sempre o banco de dados corrente) |
udt_schema | sql_identifier | Nome do esquema onde o tipo de dado dos elementos está definido |
udt_name | sql_identifier | Nome do tipo de dado dos elementos |
scope_catalog | sql_identifier | Se aplica a uma funcionalidade não disponível no PostgreSQL |
scope_schema | sql_identifier | Se aplica a uma funcionalidade não disponível no PostgreSQL |
scope_name | sql_identifier | Se aplica a uma funcionalidade não disponível no PostgreSQL |
maximum_cardinality | cardinal_number | Sempre nulo, porque as matrizes sempre possuem uma cardinalidade máxima não definida no PostgreSQL |
dtd_identifier | sql_identifier | O identificador do descritor do tipo de dado do elemento. Atualmente não tem utilidade. |
[1] |
ELEMENT_TYPES — visão — Identifica a coleção de tipos de elemento definida neste catálogo acessíveis a um determinado usuário ou grupo. (ISO-ANSI Working Draft) Information and Definition Schemas (SQL/Schemata), ISO/IEC 9075-11:2003 (E) (N. do T.) |