- 首先要理解: regclass是oid的別名,postgresql自動的爲每一個系統表都建立了一個OId,其中有一個系統表叫做:pg_class,這個表裏記錄了數據表、索引(仍然需要參閱pg_index)、序列、視圖、複合類型和一些特殊關係類型的元數據。注意:不是所有字段對所有對象類型都有意義。官方的解釋如下:
- 來看一個例子:
SELECT * FROM pg_attribute WHERE attrelid = ‘mytable’::regclass;
而不用
SELECT * FROM pg_attribute
WHERE attrelid = (SELECT oid FROM pg_class WHERE relname = ‘mytable’);
可以看出:其實, 這個“’mytable’::regclass”的作用就是等同於:select oid from pg_class where relname=’mytable’; 返回的是一個oid,所以叫做oid的別名。 再看一個例子:
rancs=> select oid,relname,reltuples from pg_class where oid=’test_1’::regclass;
oid | relname | reltuples
結果:
——-+———+———–
16416 | test_1 | 6
備註: ‘test_1’::regclass 這裏將表名轉換成表的 oid
4.相同用法的其他幾個oid別名:
regproc,regprocedure,regoper, regoperator,regclass,和 regtype。下表顯示了概要。
詳細內容參考官方文檔: http://www.php100.com/manual/PostgreSQL8/datatype-oid.html