暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

【翻译PG】51.7. pg_attribute

seagull 2025-03-14
90

51.7. pg_attribute

目录pg_attribute存储有关表列的信息。数据库中的每一个表的每一个列都恰好在pg_attribute中有一行。(这其中也会有索引的属性项,并且事实上所有具有pg_class项的对象在这里都有属性项) entries.)

术语属性等同于列,这里使用它只是出于历史原因。

表 51.7. pg_attribute的列

名称 类型 引用 描述
attrelid oid pg_class.oid 列所属的表
attname name   列名
atttypid oid pg_type.oid 列的数据类型
attstattarget int4   attstattarget控制由对此列收集的统计信息的细节层次。0值表示不会收集任何统计信息。一个负值则说明直接使用系统默认的目标。正值的确切含义取决于数据类型。对于标量数据类型,attstattarget既是要收集的”的目标号,也是要创建的柱状图容器的目标号。
attlen int2   本列类型的pg_type.typlen一个拷贝
attnum int2   列的编号。一般列从1开始向上编号。系统列(如ctid)则拥有(任意)负值编号。
attndims int4   如果该列是一个数组类型,这里就是其维度数;否则为0。(在目前一个数组的维度数并不被强制,因此任何非零值都能有效地表明”。)
attcacheoff int4   在存储中总是为-1,但是当被载入到一个内存中的行描述符后,这里可能会被更新为属性在行内的偏移
atttypmod int4   atttypmod记录了在表创建时提供的类型相关数据(例如一个varchar列的最大长度)。它会被传递给类型相关的输入函数和长度强制函数。对于那些不需要atttypmod的类型,这个值通常总是为-1。
attbyval bool   该列类型的pg_type.typbyval的一个拷贝
attstorage char   通常是该列类型的pg_type.typstorage的一个拷贝。对于可TOAST的数据类型,这可以在列创建后被修改以控制存储策略。
attalign char   该列类型的pg_type.typalign的一个拷贝
attnotnull bool   这表示一个非空约束。
atthasdef bool   该列有一个默认表达式或生成的表达式,在此情况下在pg_attrdef目录中会有一个对应项来真正定义该表达式。(检查attgenerated以确定是默认还是生成的表达式。)
atthasmissing bool   该列在行中完全缺失时会用到这个列的值,如果在行创建之后增加一个有非易失DEFAULT值的列,就会发生这种情况。实际使用的值被存放在attmissingval列中。
attidentity char   如果是一个零字节(''),则不是一个标识列。否则,a = 总是生成,d = 默认生成。
attgenerated char   如果为零字节(''),则不是生成的列。否则,s = stored。(将来可能会添加其他值。)
attisdropped bool   该列被删除且不再有效。一个删除的列仍然物理存在于表中,但是会被分析器忽略并因此无法通过SQL访问。
attislocal bool   该列是由关系本地定义的。注意一个列可以同时是本地定义和继承的。
attinhcount int4   该列的直接祖先的编号。一个具有非零编号祖先的列不能被删除或者重命名。
attcollation oid pg_collation.oid 该列被定义的排序规则,如果该列不是一个可排序数据类型则为0。
attacl aclitem[]   列级访问权限
attoptions text[]   属性级选项,以”形式的字符串
attfdwoptions text[]   属性级的外部数据包装器选项,以”形式的字符串
attmissingval anyarray   这个列中是一个含有一个元素的数组,其中的值被用于该列在行中完全缺失时,如果在行创建之后增加一个有非易失DEFAULT值的列,就会发生这种情况。只有当atthasmissing为真时才使用这个值。如果没有值则该列为空。


在一个被删除的列的pg_attribute的项中,atttypid被重置为0,但attlen以及其他从pg_type拷贝的域仍然有效。这种安排用于处理一种情况,即被删除列的数据类型后来被删除,并且因此不再有相应的pg_type行。attlen和其他域可以被用来解释表的一行的内容。


「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论