当前位置:首页 > 云计算 > 正文内容

postgresql oid是什么

2022-05-04 03:12:10云计算3

行对象标识符(对象ID),这个字段只有在创建表时使用了“with oids”或配置参数“default_with_oids”的值为真时才出现,这个字段的类型是oid(类型名与字段名同名)。

PostgreSQL在内部使用对象标识符(oid)作为系统表的主键。系统不会给用户创建的表增加一个oid字段。oid类型用一个四字节的无符号整数实现,不能提供大数据范围内的唯一性保证,甚至在单个大表中也不行。因此PostgreSQL官方不鼓励在用户创建的表中使用oid字段。

oid字段生成的序列值是全局的,可以使用以下例子进行验证:

--创建带oid的表

mydb=#createtablet1(idint)withoids;
CREATETABLE
mydb=#createtablet2(idint)withoids;
CREATETABLE

--表t1插入数据

mydb=#insertintot1values(10);
INSERT329191

--查询表t1的oid

mydb=#selectoid,idfromt1;
oid|id
------+----
32919|10
(1row)

--表t2插入数据

mydb=#insertintot2values(10);
INSERT329201

--查询表t2的oid

mydb=#selectoid,idfromt2;
oid|id
-----+----
32920|10
(1row)

--重复上面过程

mydb=#insertintot1values(11);
INSERT329211
mydb=#selectoid,idfromt1;
oid|id
------+----
32919|10
32921|11
(2rows)

mydb=#insertintot2values(11);
INSERT329221
mydb=#selectoid,idfromt2;
oid|id
------+----
32920|10
32922|11
(2rows)

由以上可以看出,oid是全局分配的。

表(包括toast表)、索引、视图的对象标识符就是系统表pg_class的oid字段的值,如下:

mydb=#selectoid,relname,relkindfrompg_classwhererelnamelike't_';
oid|relname|relkind
------+---------+---------
32913|t1|r
32916|t2|r
(2rows)

Python学习网,大量的免费PostgreSQL入门教程,欢迎在线学习!

本网站文章仅供交流学习 ,不作为商用, 版权归属原作者,部分文章推送时未能及时与原作者取得联系,若来源标注错误或侵犯到您的权益烦请告知,我们将立即删除.

本文链接:https://www.xibujisuan.cn/9038.html

标签: Python