postgresql中的OID有多少字节唯一整数?

时间:2014-05-15 12:31:55

标签: postgresql

我是postgresql的新手,我想知道postgresql中的OID有多少字节唯一整数?我正在使用postgresql版本9.3。

2 个答案:

答案 0 :(得分:6)

OID是一个32位(4字节)无符号整数。所以它的范围是0 - 4294967295。

regress=> SELECT OID '4294967295';
    oid     
------------
 4294967295
(1 row)

regress=> SELECT OID '4294967296';
ERROR:  value "4294967296" is out of range for type oid
LINE 1: SELECT OID '4294967296';
                   ^

您不应使用oid数据类型。它不是供用户使用的数据类型。它是系统使用的系统类型。忘了它存在。 {em}仅可接受的oids用户用于引用pg_largeobject中的对象,您应该使用lo提供的lo类型而不是扩展名。

不要创建表WITH OIDS。这是一项遗留功能,仅保留用于向后兼容性和在系统表中使用。再一次,忘记它存在。如果您需要行标识符,请使用serial,或者如果您担心用尽唯一值,请使用bigserial

答案 1 :(得分:1)

PostgreSQL中的OID有4个字节的唯一整数。也就是说,PostgreSQL中的每一行都会被分配一个唯一的OID。尽管在发生足够数量的行溢出并且OID值从此阶段重复之后,PostgreSQL中存在唯一OID的概念。