ux_attribute
目录ux_attribute
存储有关表列的信息。数据库中的每一个表的每一个列都恰好在ux_attribute
中有一行。(这其中也会有索引的属性项,并且事实上所有具有ux_class
项的对象在这里都有属性项。)
术语属性等同于列,这里使用它只是出于历史原因。
表?14.7.?ux_attribute
的列
名称 | 类型 | 引用 | 描述 |
---|---|---|---|
attrelid | oid |
| 列所属的表 |
attname | name | ? | 列名 |
atttypid | oid |
| 列的数据类型 |
attstattarget | int4 | ? | attstattarget 控制由ANALYZE对此列收集的统计信息的细节层次。0值表示不会收集任何统计信息。一个负值则说明直接使用系统默认的目标。正值的确切含义取决于数据类型。对于标量数据类型,attstattarget 既是要收集的“最常见值”的目标号,也是要创建的柱状图容器的目标号。
|
attlen | int2 | ? | 本列类型的ux_type.typlen 一个拷贝
|
attnum | int2 | ? | 列的编号。一般列从1开始向上编号。系统列(如oid )则拥有(劝拿庞蜗菲教ㄗ⒉嵬锯)负值编号。
|
attndims | int4 | ? | 如果该列是一个数组类型,这里就是其维度数;否则为0。(在目前一个数组的维度数并不被强制,因此任何非零值都能有效地表明“这是一个数组”。) |
attcacheoff | int4 | ? | 在存储中总是为-1,但是当被载入到一个内存中的行描述符后,这里可能会被更新为属性在行内的偏移 |
atttypmod | int4 | ? | atttypmod 记录了在表创建时提供的类型相关数据(例如一个varchar 列的最大长度)。它会被传递给类型相关的输入函数和长度强制函数。对于那些不需要atttypmod 的类型,这个值通常总是为-1。
|
attbyval | bool | ? | 该列类型的ux_type.typbyval 的一个拷贝
|
attstorage | char | ? | 通常是该列类型的ux_type.typstorage 的一个拷贝。对于可TOAST的数据类型,这可以在列创建后被修改以控制存储策略。
|
attalign | char | ? | 该列类型的ux_type.typalign 的一个拷贝
|
attnotnull | bool | ? | 这表示一个非空约束。 |
atthasdef | bool | ? | 该列有一个默认值,在此情况下在ux_attrdef 目录中会有一个对应项来真正记录默认值。
|
attidentity | char | ? | 如果是零字节('' ),则不是一个标识列。
否则,a = 总是生成的,
d = 默认生成的。
|
attisdropped | bool | ? | 该列被删除且不再有效。一个删除的列仍然物理存在于表中,但是会被分析器忽略并因此无法通过SQL访问。 |
attislocal | bool | ? | 该列是由关系本地定义的。注意一个列可以同时是本地定义和继承的。 |
attinhcount | int4 | ? | 该列的直接祖先的编号。一个具有非零编号祖先的列不能被删除或者重命名。 |
attcollation | oid |
| 该列被定义的排序规则,如果该列不是一个可排序数据类型则为0。 |
attacl | aclitem[] | ? | 列级访问权限 |
attoptions | text[] | ? | 属性级选项,以“keyword=value”形式的字符串 |
attfdwoptions | text[] | ? | 属性级的外部数据包装器选项,以“keyword=value”形式的字符串 |
在一个被删除的列的ux_attribute
的项中,atttypid
被重置为0,但attlen
以及其他从ux_type
拷贝的域仍然有效。这种安排用于处理一种情况,即被删除列的数据类型后来被删除,并且因此不再有相应的ux_type
行。attlen
和其他域可以被用来解释表的一行的内容。