🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
# 34.6\. `attributes` 视图`attributes`包含有关在数据库中定义的复合数据类型的属性信息。 (注意,视图不会提供表字段的信息,在PostgreSQL环境中有时被叫做属性。) 只有当前用户有权限时才显示这些属性(通过成为它的所有者或者在这个类型上有某些权限)。 **Table 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中的不适用特性 | 也可以在[Section 34.16](#calibre_link-2051)中查阅,一个类似的结构视图,一些字段的进一步详细信息。