在 Postgres 上,我正在寻找一种方法来唯一标识一个表,而不管名称是否更改。OID 似乎适合于此。但是 OID 在 2^32-1 之后换行。
如果要换行 OID,我可以在 pg_class 上得到两个具有相同 OID 的表吗?或者有什么可以阻止它的吗?
在 Postgres 上,我正在寻找一种方法来唯一标识一个表,而不管名称是否更改。OID 似乎适合于此。但是 OID 在 2^32-1 之后换行。
如果要换行 OID,我可以在 pg_class 上得到两个具有相同 OID 的表吗?或者有什么可以阻止它的吗?
该
oid
列是以下的主键pg_class
:所以不,两个表不能有相同的 OID。
创建新表时,如果 OID 生成器生成的值与现有行冲突,Postgres 会迭代直到找到不冲突的 OID。
查看代码
GetNewOidWithIndex
以查看注释的实现。