我是postgresql的新手,我想知道postgresql中的OID有多少字节唯一整数?我正在使用postgresql版本9.3。
答案 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的概念。