2017-08-16 95 views
1

我有表,這樣的DDL和PostgreSQL:找到類型的定義在PostgreSQL中

CREATE TABLE some_table (
    id identifier NOT NULL DEFAULT nextval('some_table_id_seq'), 
    center_name common_name NULL, 
    ... 
) 

那些identifiercommon_name類型不是非標準PostgreSQL的類型。如何找到他們的定義?

+0

最有可能的是[域](https://www.postgresql.org/docs/current/static/sql-createdomain.html)因此,在['psql'](HTTPS:// WWW。 postgresql.org/docs/current/static/app-psql.html)使用'\ dD 'meta-command來獲取它的屬性,例如'\ dD + identifier' – Abelisto

+0

和'\ dT +'用於數據類型 –

+0

任何機會從查詢中獲取這些信息? –

回答

1
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 n.nspname <> 'pg_catalog' 
     AND n.nspname <> 'information_schema' 
    AND pg_catalog.pg_type_is_visible(t.oid) 
ORDER BY 1, 2; 
+0

得到了'SQL錯誤[42601]:錯誤:語法錯誤處於或接近「LEFT」# –

+0

我編輯了查詢。請嘗試執行 –

+0

SQL錯誤[25P02]:錯誤:當前事務中止,直到事務塊結束時忽略命令 錯誤:當前事務中止,忽略命令直到事務塊結束 org.postgresql.util.PSQLException:ERROR :在「LEFT」處或附近出現語法錯誤' –

相關問題