鑑於角色名someone
角色的評論,如何獲得評論定義的條款:如何從PostgreSQL數據庫
COMMENT ON ROLE someone IS 'THIS IS A ROLE COMMENT';
?
鑑於角色名someone
角色的評論,如何獲得評論定義的條款:如何從PostgreSQL數據庫
COMMENT ON ROLE someone IS 'THIS IS A ROLE COMMENT';
?
找到如何檢索此類信息的好方法是查看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';
角色是在集羣中的所有數據庫共享所使用的psql
您需要的SQL查詢,例如:。這些共享對象的註釋包含在pg_shdescription
系統目錄中。你可以得到評論的角色,像這樣:
SELECT rolname, description AS comment
FROM pg_roles r
JOIN pg_shdescription c ON c.objoid = r.oid;
爲了簡化接受答案的查詢:
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';
謝謝。現在很清楚。是的,我查找了要執行的SQL查詢。 –