v_sys_attribute

V_SYS_ATTRIBUTE 展示关于表的字段的信息。数据库里每个表的每个字段都在 V_SYS_ATTRIBUTE 里有一行。

表166 V_SYS_ATTRIBUTE 结构
列名 类型 描述
ATTRELID OID 此列/字段所属的表
TABLE_SCHEM NAME 此列/字段所属表的模式的名字
TABLE_NAME TEXT 此列/字段所属的表的名字
ATTTYPID OID 这个字段的数据类型
ATTSTATTARGET INT attstattarget 控制 ANALYZE 为这个字段收集统计信息细节的级别。零值表示不收集统计信息。负值表示使用缺省值。正数值的含义是与数据类型相关的。对于标量数据类型,attstattarget 既是要收集的“最常用数值”的目标数目,也是要创建的柱状图的目标数量
ATTNDIMS INT 如果该字段是数组,那么是维数,否则是 0(目前,一个数组的维数并未强制,因此任何非零值都表示“这是一个数组”)
ATTCACHEOFF INT 在磁盘上总是 -1,但是如果装载入内存中的元组描述器中,它可能会被更新为在元组中缓冲字段的偏移量
ATTTYPMOD INT atttypmod 元组在创建表的时候提供的类型相关的数据(比如,一个 varchar 字段的最大长度)。它传递给类型相关的输入和输出函数当做第三个参数。其值对那些不需要 typmod 的类型而言通常为 -1
ATTINHCOUNT INT 直接祖先数
ATTLEN SMALLINT 是本字段类型 sys_type.typlen 的拷贝
ATTNUM SMALLINT 字段序号。普通列是从 1 开始计数的。系统字段,比如 oid,有(任意)负数
ATTNAME NAME 字段名字
ATTBYVAL BOOLEAN 这个字段的类型的 sys_type.typbyval 的拷贝
ATTISSET BOOLEAN 如果为真,这个字段是一个结果集。这种情况下,在 attribute 真正存储的是在 sys_proc 表里的一条元组的 OID。 sys_proc 那条元组包含定义这个结果集的查询字串。也就是说,那条能够返回这个结果集的查询。所以 atttypid (见上面)指向这个查询返回的类型,但是这个字段的实际长度是一个 oid 的长度(尺度)。至少理论如此。不过这些东西现在可能已经相当残破了
ATTALIGN "CHAR" 这个字段的类型的 sys_type.typalign 的拷贝
ATTNOTNULL BOOLEAN 这代表一个 NOT NULL 约束。我们可以改变这个字段以打开或者关闭这个约束
ATTHASDEF BOOLEAN 是否有缺省值
ATTISDROPPED BOOLEAN 是否drop掉(如逻辑不可见)
ATTISLOCAL BOOLEAN 是否有局部定义(因此,当attinhcount为0时,不可drop)
ATTISAUTO BOOLEAN 是否为自增列
ATTENCMOD TINYINT 属性的加密模式,0:不加密,7:sm4
ATTAUTOINC BIGINT 自增列初始值(非自增列则为 0)
ATTGENERATED "CHAR" 生成列类型(非生成列则为''; 虚拟列则为'v'; 存储列则为's')。缺省值信息保存在系统表 SYS_ATTRDEF 中
ATTACL ACLITEM[] 列权限配置信息