PostgreSQL:查找有关用户定义类型的信息

6

用户定义类型的信息存储在哪里?

是否有一些表格包含用户定义复合类型字段的信息,它们的名称等等?

2个回答

5

可以通过以下方式获取组合类型所构成的字段信息:

select * from pg_attribute where attrelid =
  (select typrelid from pg_type where typname = 't_employee')

其中t_employee将是复合类型的名称。


2
尽管@francs的答案链接到了适当的文档,但是这个答案即使在5年后也可以立即使用! - Adam Kaplan

4

感谢您的回复。 pg_type不存储构成复合类型的字段信息。您知道是否存在这种信息的表吗? - Antonio F.
我不确定我是否理解你的问题,如果你想知道一个表的所有列的信息,你可以查询目录pg_attribute。(http://www.postgresql.org/docs/9.0/static/catalog-pg-attribute.html) - francs
顺便提一下,pg_type.typtype表示基本类型为b,复合类型(例如表的行类型)为c,域为d,枚举类型为e,伪类型为p。另请参阅typrelid和typbasetype。 - francs
这里是我认为被问到的内容的示例(以及我也是如何到达这里的)。我们有一个名为“listing_room”的复合类型,其中包含数据(例如)“name text,floor int,width decimal,depth decimal”(是的,我知道这不是有效的SQL,但我只是在说明一点)。现在我可以创建一个名为“listings”的表,其中包含列“id serial,address text,master_bedroom room”。因此,使用任何数据库接口(在我的情况下是JDBC),我可以确定“master_bedroom”是“room”类型,但是我如何查询服务器以动态确定“room”的实际结构? - Nathan Crause

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接