\dT+ action.action_status
List of data types
Schema | Name | Internal name | Size | Elements | Description
--------+----------------------+---------------+------+----------+-------------
action | action.action_status | action_status | 4 | pending +|
| | | | live +|
| | | | done +|
| | | | notdone |
(1 row)
1
检查一下:
select enum_range(null::my_type)
我认为这是一个更简单的解决方案:) .
61
如果您只需要全名(类型名称和架构)以及所有 enum 标签的排序列表,此查询将执行以下操作:
SELECT n.nspname AS "schema", t.typname
, string_agg(e.enumlabel, '|' ORDER BY e.enumsortorder) AS enum_labels
FROM pg_catalog.pg_type t
JOIN pg_catalog.pg_namespace n ON n.oid = t.typnamespace
JOIN pg_catalog.pg_enum e ON t.oid = e.enumtypid
WHERE t.typname = 'my_enum_type'
GROUP BY 1,2;
4 回答
它是你所追求的,但并没有将它作为“创建”声明 . 您对域使用\ dD .
检查一下:
我认为这是一个更简单的解决方案:) .
如果您只需要全名(类型名称和架构)以及所有
enum
标签的排序列表,此查询将执行以下操作:返回:
string_agg()
需要Postgres 9.0或更高版本,旧版本替换为array_agg()
.要获取SQL
CREATE
语句,可以使用pg_dump
并查看转储文件 .或者,更实际地,使用pgAdmin,它为数据库中的任何对象显示反向工程SQL创建脚本 . 在
object browser
中选择它,其创建脚本显示在SQL pane
中 . 甚至可以选择将脚本自动复制到SQL editor
的新打开的窗口,您可以在其中编辑和执行它 .棘手的部分是,只需从这些视图中选择*,就不会在结果中获得OID .