查询时pg_type
,我感兴趣的是识别独立的复合类型(用户定义的),而不是与表一起创建的复合类型。也许有一种查找方法pg_class
(使用typrelid
)可能会有所帮助,但目前尚不清楚我如何做到这一点。
属于表的复合类型对中的表具有内部pg_depend
依赖性。您只需排除此类类型:
SELECT t.oid::regtype
FROM pg_type AS t
WHERE t.typtype = 'c'
AND t.typnamespace NOT IN
('pg_catalog'::regnamespace, 'pg_toast'::regnamespace)
AND NOT EXISTS (
SELECT 1 FROM pg_depend AS d
WHERE d.objid = t.oid
AND d.classid = 'pg_type'::regclass
AND d.refclassid = 'pg_class'::regclass
AND d.deptype = 'i');
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
254 次 |
最近记录: |