一,基础知识
oid用来在整个数据集簇中唯一标识一个数据库对象,对象可以是数据库、表、索引、视图、元组等等。
对于pg中的对象来说,oid与表名存在对象关系,这个关系我们可以从pg_class中得到。
二,关于regclass
regclass是一种数据类型,它实际上是oid的别名。相当于是oid和对象名之间的双向符号,既可以把oid翻译成表名,也可以把表名翻译成oid。
通过使用::regclass, 我们就不需要通过查询pg_class表来获取对象与oid的对应关系了。
举例:
------把oid翻译成表名
select oid::regclass,relname from pg_class where relname='c'
oid | relname
-----+---------
c | c
(1 row)
-------把表名翻译成oid
select oid,relname from pg_class where oid='c'::regclass;
oid | relname
-------+---------
25360 | c
(1 row)