扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
PostgreSQL表中的隐含字段是什么,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。
目前成都创新互联公司已为超过千家的企业提供了网站建设、域名、网络空间、网站托管、服务器托管、企业网站设计、安顺网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。
oid:行的对象标识符(对象ID)。
注意:这个字段只有在创建表的时候使用了WITH OIDS,或者是设置了配置参数default_with_oids时出现, 这个字段的类型是oid(和字段同名)。 OID是32位的量,是在同一个集群内通用的计数器上赋值的。对于一个大型或者长时间使用的数据库, 这个计数器是有可能重叠的。因此,OID是唯一的是非常错误的想法.
tableoid:包含本行的表的OID。这个字段对那些从继承层次中选取的查询特别有用,因为如果没有它的话,我们就很难说明一行来自哪个独立的表。tableoid可以和pg_class的oid字段连接起来获取表名字。
xmin:插入该行版本的事务的标识(事务ID)。
cmin:在插入事务内部的命令标识(从零开始)。
xmax:删除事务的标识(事务ID),如果不是被删除的行版本,那么是零。
cmax:在删除事务内部的命令标识符,或者是零。
ctid:一个行版本在它所处的表内的物理位置
注意,尽管ctid可以用于非常快速地定位行版本,但每次VACUUM FULL之后,一个行的ctid都会被更新或者移动。 因此ctid是不能作为长期的行标识符的。
数据表的字段信息都保存在pg_attributed 表中,数据表则保存在pg_class中,所以可以结合这两个查找到对应的表的所有字段
案例:
testdb=# create table table_oid (id int, name varchar(64)) with(oids=true); 创建带有oid的表
执行查找操作
testdb=# select oid, tableoid, tableoid::regclass as tablename, cmax, cmin, xmin, xmax, ctid, * from table_oid;
看完上述内容,你们掌握PostgreSQL表中的隐含字段是什么的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注创新互联行业资讯频道,感谢各位的阅读!
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流