35.6. attributes
视图attributes包含数据库中定义的组合数据类型的属性的有关信息(注意该视图并不给出有关表列的信息,表列有时候在 PostgreSQL 上下文环境中也被称为属性)。只有当前用户能够访问(由于是拥有者获得的权限或是在类型上有某些特权)的那些属性会被显示。
表 35-4. attributes列
名称 | 数据类型 | 描述 |
---|---|---|
udt_catalog | sql_identifier | 包含该数据类型的数据库名(总是当前数据库) |
udt_schema | sql_identifier | 包含该数据类型的模式名 |
udt_name | sql_identifier | 数据类型名 |
attribute_name | sql_identifier | 属性名 |
ordinal_position | cardinal_number | 属性在该数据类型内部的顺序位置(从 1 开始计算) |
attribute_default | character_data | 该属性的默认表达式 |
is_nullable | yes_or_no | 如果该属性是可能为空的,值为YES,否则为NO |
data_type | character_data | 如果该属性是一个内建类型,此列值为该属性的数据类型;如果该属性是某种数组,此列值为ARRAY(在这种情况下,见视图element_types);其他情况,此列值为USER-DEFINED(在这种情况下,该类型在attribute_udt_name和相关列中标识)。 |
character_maximum_length | cardinal_number | 如果data_type标识一个字符或位串类型,这里是声明的最大长度;如果没有声明最大长度,则对于所有其他数据类型为空。 |
character_octet_length | cardinal_number | 如果data_type标识一个字符类型,这里是一个数据的最大可能长度(以字节计);对其他所有数据类型为空。最大字节长度取决于声明的字符最大长度(见上文)和服务器编码。 |
character_set_catalog | sql_identifier | 应用于一个PostgreSQL中不可用的特性 |
character_set_schema | sql_identifier | 应用于一个PostgreSQL中不可用的特性 |
character_set_name | sql_identifier | 应用于一个PostgreSQL中不可用的特性 |
collation_catalog | sql_identifier | 包含此属性排序规则的数据库名(总是当前数据库),如果默认或者该属性的数据类型不可排序则为空 |
collation_schema | sql_identifier | 包含此属性排序规则的模式名,如果默认或者该属性的数据类型不可排序则为空 |
collation_name | sql_identifier | 该属性排序规则的名称,如果默认或者该属性的数据类型不可排序则为空 |
numeric_precision | cardinal_number | 如果data_type标识一种数字类型,这列包含这个属性类型的(声明的或隐式的)精度。精度指示了有效位数。它可以按照列numeric_precision_radix中指定的被表示为十进制(基于 10)或二进制(基于 2)。对于所有其他数据类型,这一列为空。 |
numeric_precision_radix | cardinal_number | 如果data_type标识一种数字类型,这一列指示numeric_precision和numeric_scale列中的值是基于什么来表示。该值为 2 或 10。对于所有其他数据类型,这一列为空。 |
numeric_scale | cardinal_number | 如果data_type标识一种准确数字类型,这列包含这个属性类型的(声明的或隐式的)比例。比例指示了有效位数。它可以按照列numeric_precision_radix中指定的被表示为十进制(基于 10)或二进制(基于 2)。对于所有其他数据类型,这一列为空。 |
datetime_precision | cardinal_number | 如果data_type标识一种日期、时间、时间戳或时间间隔类型,这一列包含这个属性类型的(声明的或隐式的)分数秒的精度,也就是秒值的小数点后的十进制位数。对于所有其他数据类型,这一列为空。 |
interval_type | character_data | 如果data_type标识一种时间间隔类型,这一列包含时间间隔为这个属性包括哪些域的声明,例如YEAR TO MONTH、DAY TO SECOND等等。如果没有指定域限制(也就是该时间间隔接受所有域),并且对于所有其他数据类型,这个域为空。 |
interval_precision | cardinal_number | 应用于一个PostgreSQL中不可用的特性(关于时间间隔类型属性的分数秒精度可见datetime_precision) |
attribute_udt_catalog | sql_identifier | 属性数据类型被定义的数据库名(总是当前数据库) |
attribute_udt_schema | sql_identifier | 属性数据类型被定义的模式名 |
attribute_udt_name | sql_identifier | 属性数据类型的名称 |
scope_catalog | sql_identifier | 应用于一个PostgreSQL中不可用的特性 |
scope_schema | sql_identifier | 应用于一个PostgreSQL中不可用的特性 |
scope_name | sql_identifier | 应用于一个PostgreSQL中不可用的特性 |
maximum_cardinality | cardinal_number | 总是空,因为数组在PostgreSQL中总是有无限制的最大势 |
dtd_identifier | sql_identifier | 该列的数据类型描述符的一个标识符,在从属于该表的数据类型标识符之中唯一。这主要用于与这类标识符的其他实例进行连接(该标识符的指定格式没有被定义并且不保证在未来的版本中保持相同)。 |
is_derived_reference_attribute | yes_or_no | 应用于一个PostgreSQL中不可用的特性 |
关于某些列的详情,参见第 35.16 节之下的一个相似结构的视图。