oid在那里,但在PostgreSQL v9.2中没有

时间:2014-01-12 23:45:52

标签: postgresql

我在使用psql的终端上使用PostgreSQL v9.2.4。什么时候

  \d  pg_class

 SELECT * FROM pg_class;

没有oid ......但是,什么时候

 SELECT oid FROM pg_class;

oid在那里(!! ??)。这是一个错误吗?我可以在没有风险的情况下使用oid吗?


注意: 我看到当导航到时,某些东西从9.2变为9.3 http://www.postgresql.org/docs/9.2/static/catalog-pg-class.htmlhttp://www.postgresql.org/docs/9.3/static/catalog-pg-class.html 因为oid只有9.3个文档...所以v9.2.4是一种“过渡”,但我认为还有一种BUG。

1 个答案:

答案 0 :(得分:2)

oid是一个隐藏的系统列。它仅存在于创建的表WITH OIDS上,并且从未在表列中列出。

一般来说,您应该将oids视为传统的怪癖,这些日子仅供系统目录中的内部使用。不要在用户表中使用它们,也不要创建表WITH OIDS

可以在系统表的视图中引用它们,例如:

CREATE VIEW something AS
SELECT oid, relname FROM pg_class;

但一般情况下你不应该这样做。如果需要,您可以写oid, *,但无论如何在视图中使用*都不是好习惯。