36.23. element_types

视图element_types包含数组元素的数据类型 Descriptors。当表列,复合类型属性,域,函数参数或函数返回值定义为数组类型时,相应的信息模式视图在data_type列中仅包含ARRAY。要获取有关数组元素类型的信息,可以将相应的视图与此视图连接。例如,要显示具有数据类型和数组元素类型的表的列(如果适用),您可以执行以下操作:

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.collection_type_identifier))
WHERE c.table_schema = '...' AND c.table_name = '...'
ORDER BY c.ordinal_position;

该视图仅包括当前用户(作为所有者或具有某些特权)有权访问的对象。

表 36.21. element_types

NameData TypeDescription
object_catalogsql_identifier包含使用所描述数组的对象的数据库的名称(始终为当前数据库)
object_schemasql_identifier包含使用所描述数组的对象的模式名称
object_namesql_identifier使用所描述的数组的对象的名称
object_typecharacter_data描述了使用该数组的对象的类型:TABLE(该数组用于该表的列),USER-DEFINED TYPE(该数组由该复合类型的属性使用),DOMAIN(该数组用于该域),ROUTINE(该数组由该函数的参数或返回数据类型使用)。
collection_type_identifiersql_identifier描述的数组的数据类型 Descriptors 的标识符。使用它可以与其他信息架构视图的dtd_identifier列联接。
data_typecharacter_data数组元素的数据类型(如果是内置类型),否则为USER-DEFINED(在这种情况下,该类型在udt_name和关联的列中标识)。
character_maximum_lengthcardinal_number始终为 null,因为此信息不适用于 PostgreSQL 中的数组元素数据类型
character_octet_lengthcardinal_number始终为 null,因为此信息不适用于 PostgreSQL 中的数组元素数据类型
character_set_catalogsql_identifier适用于 PostgreSQL 中不可用的功能
character_set_schemasql_identifier适用于 PostgreSQL 中不可用的功能
character_set_namesql_identifier适用于 PostgreSQL 中不可用的功能
collation_catalogsql_identifier包含元素类型排序规则的数据库的名称(总是当前数据库),如果默认或元素的数据类型不可排序,则为 null
collation_schemasql_identifier包含元素类型的排序规则的模式名称,如果默认或元素的数据类型不可排序,则为 null
collation_namesql_identifier元素类型的归类名称,如果默认或元素的数据类型不可归类,则为 null
numeric_precisioncardinal_number始终为 null,因为此信息不适用于 PostgreSQL 中的数组元素数据类型
numeric_precision_radixcardinal_number始终为 null,因为此信息不适用于 PostgreSQL 中的数组元素数据类型
numeric_scalecardinal_number始终为 null,因为此信息不适用于 PostgreSQL 中的数组元素数据类型
datetime_precisioncardinal_number始终为 null,因为此信息不适用于 PostgreSQL 中的数组元素数据类型
interval_typecharacter_data始终为 null,因为此信息不适用于 PostgreSQL 中的数组元素数据类型
interval_precisioncardinal_number始终为 null,因为此信息不适用于 PostgreSQL 中的数组元素数据类型
domain_defaultcharacter_data尚未实现
udt_catalogsql_identifier定义元素的数据类型的数据库的名称(总是当前数据库)
udt_schemasql_identifier在其中定义元素的数据类型的模式的名称
udt_namesql_identifier元素的数据类型名称
scope_catalogsql_identifier适用于 PostgreSQL 中不可用的功能
scope_schemasql_identifier适用于 PostgreSQL 中不可用的功能
scope_namesql_identifier适用于 PostgreSQL 中不可用的功能
maximum_cardinalitycardinal_number始终为 null,因为数组在 PostgreSQL 中始终具有无限的最大基数
dtd_identifiersql_identifier元素的数据类型 Descriptors 的标识符。目前这没有用。