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
列
Name | Data Type | Description |
---|---|---|
object_catalog | sql_identifier | 包含使用所描述数组的对象的数据库的名称(始终为当前数据库) |
object_schema | sql_identifier | 包含使用所描述数组的对象的模式名称 |
object_name | sql_identifier | 使用所描述的数组的对象的名称 |
object_type | character_data | 描述了使用该数组的对象的类型:TABLE (该数组用于该表的列),USER-DEFINED TYPE (该数组由该复合类型的属性使用),DOMAIN (该数组用于该域),ROUTINE (该数组由该函数的参数或返回数据类型使用)。 |
collection_type_identifier | sql_identifier | 描述的数组的数据类型 Descriptors 的标识符。使用它可以与其他信息架构视图的dtd_identifier 列联接。 |
data_type | character_data | 数组元素的数据类型(如果是内置类型),否则为USER-DEFINED (在这种情况下,该类型在udt_name 和关联的列中标识)。 |
character_maximum_length | cardinal_number | 始终为 null,因为此信息不适用于 PostgreSQL 中的数组元素数据类型 |
character_octet_length | cardinal_number | 始终为 null,因为此信息不适用于 PostgreSQL 中的数组元素数据类型 |
character_set_catalog | sql_identifier | 适用于 PostgreSQL 中不可用的功能 |
character_set_schema | sql_identifier | 适用于 PostgreSQL 中不可用的功能 |
character_set_name | sql_identifier | 适用于 PostgreSQL 中不可用的功能 |
collation_catalog | sql_identifier | 包含元素类型排序规则的数据库的名称(总是当前数据库),如果默认或元素的数据类型不可排序,则为 null |
collation_schema | sql_identifier | 包含元素类型的排序规则的模式名称,如果默认或元素的数据类型不可排序,则为 null |
collation_name | sql_identifier | 元素类型的归类名称,如果默认或元素的数据类型不可归类,则为 null |
numeric_precision | cardinal_number | 始终为 null,因为此信息不适用于 PostgreSQL 中的数组元素数据类型 |
numeric_precision_radix | cardinal_number | 始终为 null,因为此信息不适用于 PostgreSQL 中的数组元素数据类型 |
numeric_scale | cardinal_number | 始终为 null,因为此信息不适用于 PostgreSQL 中的数组元素数据类型 |
datetime_precision | cardinal_number | 始终为 null,因为此信息不适用于 PostgreSQL 中的数组元素数据类型 |
interval_type | character_data | 始终为 null,因为此信息不适用于 PostgreSQL 中的数组元素数据类型 |
interval_precision | cardinal_number | 始终为 null,因为此信息不适用于 PostgreSQL 中的数组元素数据类型 |
domain_default | character_data | 尚未实现 |
udt_catalog | sql_identifier | 定义元素的数据类型的数据库的名称(总是当前数据库) |
udt_schema | sql_identifier | 在其中定义元素的数据类型的模式的名称 |
udt_name | sql_identifier | 元素的数据类型名称 |
scope_catalog | sql_identifier | 适用于 PostgreSQL 中不可用的功能 |
scope_schema | sql_identifier | 适用于 PostgreSQL 中不可用的功能 |
scope_name | sql_identifier | 适用于 PostgreSQL 中不可用的功能 |
maximum_cardinality | cardinal_number | 始终为 null,因为数组在 PostgreSQL 中始终具有无限的最大基数 |
dtd_identifier | sql_identifier | 元素的数据类型 Descriptors 的标识符。目前这没有用。 |