PostgreSQL 9.4.4 中文手册
上一页 | 上一级 | 章 34. 信息模式 | 下一页

# 34.6. `attributes`

视图`attributes`包含有关在数据库中定义的复合数据类型的属性信息。 （注意，视图不会提供表字段的信息，在PostgreSQL环境中有时被叫做属性。） 只有当前用户有权限时才显示这些属性（通过成为它的所有者或者在这个类型上有某些权限）。

表 34-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`标识一个字符或比特流类型，那么是声明的最大长度； 对于所有其它的数据类型或如果没有声明最大长度都用null。
`character_octet_length` | `cardinal_number` | 如果`data_type`识别一个字符类型， 那么最大可能长度在一个数据的字节（bytes）中；对于所有其它的数据类型为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`标识一个数字类型，那么该字段 （隐含地或者公开地）包含属性类型的精度。该精度表明了有效数字的位数。 它可以用在十进制（base 10）或者二进制（base 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`标识一个精确的数字类型，那么该字段 （公开地或隐含地）包含属性类型的数值范围。该数值范围表明了小数点右边有效数字位数。 它可以用在十进制(base 10)或者二进制(base 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中的不适用特性

也可以在第 34.16 节中查阅，一个类似的结构视图，一些字段的进一步详细信息。

上一页 | 起始页 | 下一页
`applicable_roles` | 上一级 | `character_sets`