Postgresql

查找自定義數據類型的目前所有者?

  • January 14, 2016

在 Postgresql 中,當我嘗試ALTER TYPE x ADD VALUE y;在自定義數據類型上執行時,我收到一條錯誤消息PG::Error: ERROR: must be owner of type x

我知道這可以通過執行來解決,ALTER TYPE x OWNER TO <database owner>但我很好奇的是如何檢查這個特定數據類型的目前所有者。\dT+ x沒有給我有關目前所有者的資訊。

如何提取有關自定義數據類型的更多資訊,包括目前所有者?

直到 9.4

您可以去詢問系統目錄(pg_type準確地說是 ):

SELECT rolname 
 FROM pg_type t 
 JOIN pg_authid r ON typowner = r.oid 
WHERE typname = 'bla';

usename 
─────────
dezso

從 PostgreSQL 9.5 開始

從這個版本開始,有一個名為的新對象標識符類型regrole,它使查詢更簡單:

SELECT typowner::regrole 
 FROM pg_type t 
WHERE typname = 'bla';

但還有更多 - 新的 9.5 版本psql在使用時已經顯示了所有者\dT+

     Schema       | Name | Internal name | Size | Elements |  Owner   | ...
-------------------+------+---------------+------+----------+----------+ ...
zel_api_r14_00_09 | bla  | bla           | 4    | a        | postgres | ...

引用自:https://dba.stackexchange.com/questions/126207