v_sys_attribute¶
V_SYS_ATTRIBUTE 展示关于表的字段的信息。数据库里每个表的每个字段都在 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[] | 列权限配置信息 |