↑↓ 选择↵ 打开⌫ 切换范围完整搜索

PG.CENTER 连接 PostgreSQL 文档、百科与生态知识。由 Pigsty 维护。

Wiki / 系统目录

pg_type

目录pg_type存储有关数据类型的信息。基础类型和枚举类型(标量类型)使用CREATE TYPE创建,而域使用CREATE DOMAIN创建。数据库中的每一个表都会有一个自动创建的复合类型,用于表示表的行结构。也可以使用CREATE TYPE AS创建复合类型。

英文手册覆盖始于 PostgreSQL 7.4. 来源历史与运行验证各自保留独立版本边界。

当前阅读 PG 18·选择有来源记录的版本

kind
catalog
lang
en
measured attributes
true
metadata release
18.6
runtime verified
false
source
english-manual

版本定义 PG 18

目录pg_type存储有关数据类型的信息。基础类型和枚举类型(标量类型)使用CREATE TYPE创建,而域使用CREATE DOMAIN创建。数据库中的每一个表都会有一个自动创建的复合类型,用于表示表的行结构。也可以使用CREATE TYPE AS创建复合类型。

目录列

列类型可空性描述
oidoid非空行标识符
typnamename非空数据类型的名字
typnamespaceoid非空包含此类型的名字空间的OID
typowneroid非空类型的拥有者
typlenint2非空对于一个固定尺寸的类型,typlen是该类型内部表示的字节数。对于一个变长类型,typlen为负值。-1表示一个“varlena”类型(具有长度字),-2表示一个以空字符结尾的 C 字符串。
typbyvalbool非空typbyval判断内部例程传递这个类型的值时是通过传值还是传引用。如果typlen不是1、2或4(或者在Datum为8字节的机器上为8),则typbyval最好是假。变长类型总是传引用。注意即使长度允许传值,typbyval也可以为假。
typtypechar非空typtype可以是:b表示一个基础类型,c表示一个复合类型(例如一个表的行类型),d表示一个域,e表示一个枚举类型,p表示一个伪类型,r表示一个范围类型,或 m表示一个多范围类型。另请参阅typrelid和typbasetype。
typcategorychar非空typcategory是一种任意的数据类型分类,它被解析器用来决定应“首选”哪些隐式类型转换。参见表 52.65。
typispreferredbool非空如果此类型在它的typcategory中是首选的类型转换目标,此列为真
typisdefinedbool非空如果此类型已被定义则为真,如果此类型只是一个表示还未定义类型的占位符则为假。当typisdefined为假,除了类型名字、名字空间和OID之外什么都不能被依赖。
typdelimchar非空在分析数组输入时,分隔两个此类型值的字符。注意该分隔符是与数组元素数据类型相关联的,而不是和数组的数据类型关联。
typrelidoid非空如果这是一个复合类型(见typtype),那么此列指向pg_class中定义对应表的项(对于独立定义的复合类型,pg_class项并不表示一个表,但不管怎样该类型的pg_attribute项需要链接到它)。对非复合类型此列为零。
typsubscriptregproc非空下标处理函数的 OID,如果该类型不支持下标则为零。“真正的”数组类型的 typsubscript = array_subscript_handler,但其他类型也可能使用不同的处理函数来实现特定的下标行为。
typelemoid非空如果typelem不为零,则它标识pg_type中的另一行,该行定义了下标操作产生的类型。如果typsubscript为零则该项为零。但是,当typsubscript不为零时它也可以为零,如果处理函数不需要typelem来决定下标结果类型。注意typelem依赖被视为意味着该类型在物理上包含其元素类型;所以这个元素类型上的DDL变更可能会受到该类型存在的限制。
typarrayoid非空如果typarray不是零,则它标识pg_type中的另一行,这一行是一个将此类型作为元素的“真正的”数组类型
typinputregproc非空输入转换函数(文本格式)
typoutputregproc非空输出转换函数(文本格式)
typreceiveregproc非空输入转换函数(二进制格式),如果没有则为零
typsendregproc非空输出转换函数(二进制格式),如果没有则为零
typmodinregproc非空类型修饰符输入函数,如果类型不支持修饰符则为零
typmodoutregproc非空类型修饰符输出函数,或为零以使用标准格式
typanalyzeregproc非空自定义ANALYZE函数,零表示使用标准函数
typalignchar非空typalign表示存储此类型值时所要求的对齐方式。它适用于磁盘存储,以及该值在 PostgreSQL 内部的大多数表示形式。当多个值连续存放时,例如在磁盘上完整行的表示中,这种类型的数据前会插入填充,使其从指定边界开始。对齐参考点是该序列中第一个数据的起始位置。可能的值为:
typstoragechar非空对于变长类型(typlen = -1),typstorage 同时指示该类型是否支持 TOAST,以及其属性应采用的默认策略。可能的值是: x 是支持 TOAST 的类型的常见选择。注意,m值也可以移到二级存储,但只能作为最后手段(e和x值会先被移动)。
typnotnullbool非空typnotnull表示类型上的一个非空约束。只用于域。
typbasetypeoid非空如果这是一个域(见typtype),则typbasetype标识该域所基于的类型。如果此类型不是域,则为 0。
typtypmodint4非空域使用typtypmod来记录被应用于它们基础类型的typmod(如果基础类型不使用typmod,则为-1)。如果此类型不是一个域则为-1。
typndimsint4非空对于基于数组的域,typndims是数组维度数(即,typbasetype是一个数组类型)。对于不是基于数组的域的类型,此列为零。
typcollationoid非空typcollation指定此类型的排序规则。如果类型不支持排序规则,此列为零。支持排序规则的基础类型在这里会有一个非零值,典型值为DEFAULT_COLLATION_OID。基于支持排序规则的类型的域,如果为其指定了排序规则 OID,则它的排序规则 OID 可以不同于其基础类型的排序规则 OID。
typdefaultbinpg_node_tree可空如果typdefaultbin非 NULL,那么它就是该类型默认表达式的nodeToString()表示形式。此列只用于域。
typdefaulttext可空如果某类型没有相关默认值,那么typdefault为 NULL。如果typdefaultbin不为 NULL,那么typdefault必须包含由typdefaultbin表示的默认表达式的人类可读版本。如果typdefaultbin为 NULL而typdefault不为 NULL,则typdefault是该类型默认值的外部表示形式,它可以被交给该类型的输入转换器来产生一个常量。
typaclaclitem[]可空访问权限,另请参阅第 5.8 节

比较版本

完整来源事实

runtime columns

oid, typname, typnamespace, typowner, typlen, typbyval, typtype, typcategory, typispreferred, typisdefined, typdelim, typrelid, typsubscript, typelem, typarray, typinput, typoutput, typreceive, typsend, typmodin, typmodout, typanalyze, typalign, typstorage, typnotnull, typbasetype, typtypmod, typndims, typcollation, typdefaultbin, typdefault, typacl

来源引用

完整定义与证据 JSON

定义来源

center · PostgreSQL 18 · english-manuals:7ccd3acc4070ff012770bbecf798361c0d9e93f7548eac7e946c2638d5cea4cf

正文语言: zh-Hans · 2026-09-27@419045e