Postgresql下regclass的意義

  1. 首先要理解: regclass是oid的別名,postgresql自動的爲每一個系統表都建立了一個OId,其中有一個系統表叫做:pg_class,這個表裏記錄了數據表、索引(仍然需要參閱pg_index)、序列、視圖、複合類型和一些特殊關係類型的元數據。注意:不是所有字段對所有對象類型都有意義。官方的解釋如下:
    pg_class的詳細內容
  2. 來看一個例子:
    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的別名。
  3. 再看一個例子:
    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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章