在我的Postgres数据库中,我有这个表:
CREATE TYPE address_type AS (
name text,
street text,
houseno integer );
CREATE TABLE person (
address address_type,
count integer );
我需要获取address_type字段的元数据。
我已经浏览了documentation和this并且很喜欢,但只获取列名称,而且它的数据类型对我来说还不够,我需要获取元数据列的字段,例如,结构的所有字段(name,street,houseno)以及它们的类型(text,text,int)。
有人可以在这方面指导我吗?
它甚至可行吗?
答案 0 :(得分:1)
您可以使用如下查询找到复合类型的字段名称和类型:
SELECT a.attname, a.atttypid::regtype
FROM pg_attribute a
JOIN pg_class c ON a.attrelid = c.oid
WHERE c.relname = 'address_type'
AND c.relkind = 'c'
AND NOT a.attisdropped
AND a.attnum > 0
ORDER BY a.attnum;