2015-11-02 114 views

回答

5

找到如何檢索此類信息的好方法是查看psql的幫助,並找到將顯示此信息的命令。

在這種情況下,它是dg+命令。

知道該命令後,您可以啓用psql工具的內部SQL查詢的打印,以瞭解它如何檢索該信息。這通過使用參數-E開始psql來完成。

如果你這樣做,你會看到:

psql (9.4.5) 
Type "help" for help. 

postgres=# \dg+ 
********* QUERY ********** 
SELECT r.rolname, r.rolsuper, r.rolinherit, 
    r.rolcreaterole, r.rolcreatedb, r.rolcanlogin, 
    r.rolconnlimit, r.rolvaliduntil, 
    ARRAY(SELECT b.rolname 
     FROM pg_catalog.pg_auth_members m 
     JOIN pg_catalog.pg_roles b ON (m.roleid = b.oid) 
     WHERE m.member = r.oid) as memberof 
, pg_catalog.shobj_description(r.oid, 'pg_authid') AS description 
, r.rolreplication 
FROM pg_catalog.pg_roles r 
ORDER BY 1; 
************************** 

           List of roles 
    Role name |   Attributes    | Member of | Description 
---------------+-----------------------------------+-----------+----------------------- 
someone  |         | {}  | THIS IS A ROLE COMMENT 

這不是從你的問題清楚,如果你只是想一些方法查看評論,然後dg+可能是不夠的。否則,你可以調整

SELECT pg_catalog.shobj_description(r.oid, 'pg_authid') AS description 
FROM pg_catalog.pg_roles r 
where r.rolname = 'someone'; 
+0

謝謝。現在很清楚。是的,我查找了要執行的SQL查詢。 –

3

角色是在集羣中的所有數據庫共享所使用的psql您需要的SQL查詢,例如:。這些共享對象的註釋包含在pg_shdescription系統目錄中。你可以得到評論的角色,像這樣:

SELECT rolname, description AS comment 
FROM pg_roles r 
JOIN pg_shdescription c ON c.objoid = r.oid; 
0

爲了簡化接受答案的查詢:

select r.rolname, psd.description 
from pg_catalog.pg_shdescription psd 
inner join pg_roles r ON r.oid = psd.objoid 
inner join pg_class c ON c.relname = 'pg_authid' 
inner join pg_namespace n ON n.oid = c.relnamespace AND n.nspname = 'pg_catalog'; 
相關問題