历史版本。 PostgreSQL 12 已结束支持。 2024-11-21. 请参阅 当前版本手册.
36.6. attributes #
视图 attributes 包含数据库中定义的复合数据类型的属性信息。(注意,该视图不提供表列的信息,而表列在 PostgreSQL 的语境中有时也称为属性。)只显示当前用户能够访问的属性(作为该类型的拥有者或具有该类型上的某种权限)。
表 36.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 |
如果该属性可能为 null,则为 YES;如果已知不能为 null,则为 NO。
|
data_type | character_data |
如果该属性是一个内置类型,此列值为该属性的数据类型;如果该属性是某种数组,此列值为 ARRAY(在这种情况下,见视图 element_types);其他情况,此列值为 USER-DEFINED(在这种情况下,该类型在 attribute_udt_name 和相关列中标识)。
|
character_maximum_length | cardinal_number |
如果 data_type 标识字符类型或位串类型,则为声明的最大长度;对于其他所有数据类型,或未声明最大长度时,则为 null。
|
character_octet_length | cardinal_number |
如果 data_type 标识字符类型,这里是一个数据值可能的最大字节长度;对于所有其他数据类型则为 null。最大字节长度取决于声明的字符最大长度(见上文)和服务器编码。
|
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 |
如果 data_type 标识数值类型,此列包含该属性数据类型的(声明的或隐式的)精度。精度表示有效位数。它可以按十进制(基数 10)或二进制(基数 2)表示,具体由 numeric_precision_radix 列指定。对于其他所有数据类型,此列为 null。
|
numeric_precision_radix | cardinal_number |
如果 data_type 标识数值类型,此列指示 numeric_precision 和 numeric_scale 列中的值采用的进制。值为 2 或 10。对于其他所有数据类型,此列为 null。
|
numeric_scale | cardinal_number |
如果 data_type 标识精确数值类型,此列包含该属性数据类型的(声明的或隐式的)小数位数。小数位数表示小数点右侧的有效位数。它可以按十进制(基数 10)或二进制(基数 2)表示,具体由 numeric_precision_radix 列指定。对于其他所有数据类型,此列为 null。
|
datetime_precision | cardinal_number |
如果 data_type 标识日期、时间、时间戳或时间间隔类型,此列包含该属性数据类型的(声明的或隐式的)小数秒精度,即秒值小数点后保留的十进制位数。对于其他所有数据类型,此列为 null。
|
interval_type | character_data |
如果 data_type 标识时间间隔类型,此列说明该属性的时间间隔包含哪些字段,例如 YEAR TO MONTH、DAY TO SECOND 等。未指定字段限制时(即时间间隔接受所有字段),或对于其他所有数据类型,此列为 null。
|
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 | 总是为 null,因为 PostgreSQL 中数组的最大基数始终不受限制 |
dtd_identifier | sql_identifier | 属性的数据类型描述符标识符,它在与该复合类型相关的数据类型描述符中是唯一的。这主要有助于与其他此类标识符实例进行连接。(该标识符的具体格式没有定义,也不保证在未来版本中保持不变。) |
is_derived_reference_attribute | yes_or_no | 对应 PostgreSQL 不支持的特性 |
关于某些列的详细信息,也可参见结构相似的视图第 36.17 节中的说明。