35.6. attributes

视图attributes包含数据库中定义的组合数据类型的属性的有关信息(注意该视图并不给出有关表列的信息,表列有时候在 PostgreSQL 上下文环境中也被称为属性)。只有当前用户能够访问(由于是拥有者获得的权限或是在类型上有某些特权)的那些属性会被显示。

表 35-4. attributes

名称数据类型描述
udt_catalogsql_identifier包含该数据类型的数据库名(总是当前数据库)
udt_schemasql_identifier包含该数据类型的模式名
udt_namesql_identifier数据类型名
attribute_namesql_identifier属性名
ordinal_positioncardinal_number属性在该数据类型内部的顺序位置(从 1 开始计算)
attribute_defaultcharacter_data该属性的默认表达式
is_nullableyes_or_no 如果该属性是可能为空的,值为YES,否则为NO
data_typecharacter_data 如果该属性是一个内建类型,此列值为该属性的数据类型;如果该属性是某种数组,此列值为ARRAY(在这种情况下,见视图element_types);其他情况,此列值为USER-DEFINED(在这种情况下,该类型在attribute_udt_name和相关列中标识)。
character_maximum_lengthcardinal_number 如果data_type标识一个字符或位串类型,这里是声明的最大长度;如果没有声明最大长度,则对于所有其他数据类型为空。
character_octet_lengthcardinal_number 如果data_type标识一个字符类型,这里是一个数据的最大可能长度(以字节计);对其他所有数据类型为空。最大字节长度取决于声明的字符最大长度(见上文)和服务器编码。
character_set_catalogsql_identifier应用于一个PostgreSQL中不可用的特性
character_set_schemasql_identifier应用于一个PostgreSQL中不可用的特性
character_set_namesql_identifier应用于一个PostgreSQL中不可用的特性
collation_catalogsql_identifier 包含此属性排序规则的数据库名(总是当前数据库),如果默认或者该属性的数据类型不可排序则为空
collation_schemasql_identifier 包含此属性排序规则的模式名,如果默认或者该属性的数据类型不可排序则为空
collation_namesql_identifier 该属性排序规则的名称,如果默认或者该属性的数据类型不可排序则为空
numeric_precisioncardinal_number 如果data_type标识一种数字类型,这列包含这个属性类型的(声明的或隐式的)精度。精度指示了有效位数。它可以按照列numeric_precision_radix中指定的被表示为十进制(基于 10)或二进制(基于 2)。对于所有其他数据类型,这一列为空。
numeric_precision_radixcardinal_number 如果data_type标识一种数字类型,这一列指示numeric_precisionnumeric_scale列中的值是基于什么来表示。该值为 2 或 10。对于所有其他数据类型,这一列为空。
numeric_scalecardinal_number 如果data_type标识一种准确数字类型,这列包含这个属性类型的(声明的或隐式的)比例。比例指示了有效位数。它可以按照列numeric_precision_radix中指定的被表示为十进制(基于 10)或二进制(基于 2)。对于所有其他数据类型,这一列为空。
datetime_precisioncardinal_number 如果data_type标识一种日期、时间、时间戳或时间间隔类型,这一列包含这个属性类型的(声明的或隐式的)分数秒的精度,也就是秒值的小数点后的十进制位数。对于所有其他数据类型,这一列为空。
interval_typecharacter_data 如果data_type标识一种时间间隔类型,这一列包含时间间隔为这个属性包括哪些域的声明,例如YEAR TO MONTHDAY TO SECOND等等。如果没有指定域限制(也就是该时间间隔接受所有域),并且对于所有其他数据类型,这个域为空。
interval_precisioncardinal_number 应用于一个PostgreSQL中不可用的特性(关于时间间隔类型属性的分数秒精度可见datetime_precision
attribute_udt_catalogsql_identifier 属性数据类型被定义的数据库名(总是当前数据库)
attribute_udt_schemasql_identifier 属性数据类型被定义的模式名
attribute_udt_namesql_identifier 属性数据类型的名称
scope_catalogsql_identifier应用于一个PostgreSQL中不可用的特性
scope_schemasql_identifier应用于一个PostgreSQL中不可用的特性
scope_namesql_identifier应用于一个PostgreSQL中不可用的特性
maximum_cardinalitycardinal_number总是空,因为数组在PostgreSQL中总是有无限制的最大势
dtd_identifiersql_identifier 该列的数据类型描述符的一个标识符,在从属于该表的数据类型标识符之中唯一。这主要用于与这类标识符的其他实例进行连接(该标识符的指定格式没有被定义并且不保证在未来的版本中保持相同)。
is_derived_reference_attributeyes_or_no应用于一个PostgreSQL中不可用的特性

关于某些列的详情,参见第 35.16 节之下的一个相似结构的视图。