• 技术文章 >数据库 >PostgreSQL

    postgresql oid是什么

    爱喝马黛茶的安东尼爱喝马黛茶的安东尼2019-12-17 14:42:50原创3823

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

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

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

    --创建带oid的表

    1

    2

    3

    4

    mydb=# create table t1(id int) with oids;

    CREATE TABLE

    mydb=# create table t2(id int) with oids;

    CREATE TABLE

    --表t1插入数据

    1

    2

    mydb=# insert into t1 values(10);

    INSERT 32919 1

    --查询表t1的oid

    1

    2

    3

    4

    5

    mydb=# select oid,id from t1;

    oid  | id

    ------+----

    32919 | 10

    (1 row)

    --表t2插入数据

    1

    2

    mydb=# insert into t2 values(10);

    INSERT 32920 1

    --查询表t2的oid

    1

    2

    3

    4

    5

    mydb=# select oid,id from t2;

    oid | id

    -----+----

    32920| 10

    (1 row)

    --重复上面过程

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    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字段的值,如下:

    1

    2

    3

    4

    5

    6

    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入门教程,欢迎在线学习!

    专题推荐:postgresql oid
    上一篇:postgresql怎么备份数据库 下一篇:postgresql 如何查看有哪些表

    相关文章推荐

    • 一文了解什么是PostgreSQL• postgresql是什么

    全部评论我要评论

    © 2021 Python学习网 苏ICP备2021003149号-1

  • 取消发布评论
  • 

    Python学习网