2013-05-02 120 views

回答

18

“数据类型”中的PostgreSQL实际上包括原始(内置)的类型,由扩展程序添加的类型,用户定义的复合类型,域和表rowtypes。目前还不清楚哪些是你感兴趣的。给定数据库中可用的所有类型都列在该数据库的pg_catalog.pg_type中,因此您可能需要过滤结果。见the documentation for the pg_type system catalog table

可用但未安装的扩展的类型是而不是列出。没有办法列出未安装在当前数据库中的扩展提供的类型。

要获得更漂亮的类型列表,请使用psql\dT *命令。您可以通过与-E标志运行psql看到潜在的SQL此执行:

$ psql -E regress 
regress=> \dT * 
********* QUERY ********** 
SELECT n.nspname as "Schema", 
    pg_catalog.format_type(t.oid, NULL) AS "Name", 
    pg_catalog.obj_description(t.oid, 'pg_type') as "Description" 
FROM pg_catalog.pg_type t 
    LEFT JOIN pg_catalog.pg_namespace n ON n.oid = t.typnamespace 
WHERE (t.typrelid = 0 OR (SELECT c.relkind = 'c' FROM pg_catalog.pg_class c WHERE c.oid = t.typrelid)) 
    AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_type el WHERE el.oid = t.typelem AND el.typarray = t.oid) 
    AND pg_catalog.pg_type_is_visible(t.oid) 
ORDER BY 1, 2; 
************************** 
12
select * from pg_type; 

pg_type

+0

你要列出您的特定数据库中的所有类型的,或者说是在缴费Postgres的所有数据类型? – Borys 2013-05-02 18:51:30

相关问题