postgresqloid是什么
行对象标识符(对象ID),这个字段只有在创建表时使用了“with oids”或配置参数“default_with_oids”的值为真时才出现,这个字段的类型是oid(类型名与字段名同名)。
PostgreSQL在内部使用对象标识符(oid)作为系统表的主键。系统不会给用户创建的表增加一个oid字段。oid类型用一个四字节的无符号整数实现,不能提供大数据范围内的唯一性保证,甚至在单个大表中也不行。因此PostgreSQL官方不鼓励在用户创建的表中使用oid字段。
oid字段生成的序列值是全局的,可以使用以下例子进行验证:
--创建带oid的表
mydb=# create table t1(id int) with oids;CREATE TABLE
mydb=# create table t2(id int) with oids;
CREATE TABLE
--表t1插入数据
mydb=# insert into t1 values(10);INSERT 32919 1
--查询表t1的oid
mydb=# select oid,id from t1;oid | id
------+----
32919 | 10
(1 row)
--表t2插入数据
mydb=# insert into t2 values(10);INSERT 32920 1
--查询表t2的oid
mydb=# select oid,id from t2;oid | id
-----+----
32920| 10
(1 row)
--重复上面过程
mydb=# insert into t1 values(11);INSERT 32921 1
mydb=# select oid,id from t1;
oid | id
------+----
32919 | 10
32921 | 11
(2 rows)
mydb=# insert into t2 values(11);
INSERT 32922 1
mydb=# select oid,id from t2;
oid | id
------+----
32920 | 10
32922 | 11
(2 rows)
由以上可以看出,oid是全局分配的。
表(包括toast表)、索引、视图的对象标识符就是系统表pg_class的oid字段的值,如下:
mydb=# select oid,relname,relkind from pg_class where relname like 't_';oid | relname | relkind
------+---------+---------
32913 | t1 | r
32916 | t2 | r
(2 rows)
Python学习网,大量的免费PostgreSQL入门教程,欢迎在线学习!
以上是 postgresqloid是什么 的全部内容, 来源链接: utcz.com/z/538389.html