定期查询 pg_type 以获取枚举是一种不好的做法吗?

Ale*_*ans 3 postgresql catalogs enum

在 Postgres 中,我正在考虑查询pg_type我经常使用的最新枚举列表。我会使用这样的东西:

SELECT pg_type.typname AS enum_type, pg_enum.enumlabel AS enmu_label FROM 
pg_type JOIN pg_enum ON pg_enum.enumtypid = pg_type.oid;
Run Code Online (Sandbox Code Playgroud)

或者

SELECT distinct pg_type.typname AS enum_type FROM pg_type JOIN pg_enum ON 
pg_enum.enumtypid = pg_type.oid;
Run Code Online (Sandbox Code Playgroud)

这是不好的做法吗?

Erw*_*ter 5

什么@Jack说。另外,如果您只需要枚举类型的注册值列表,那么有一些枚举支持函数可以做到这一点。基于杰克的例子:

SELECT enum_range(null::mood);

enum_range
--------------
{sad,ok,happy}
Run Code Online (Sandbox Code Playgroud)

这对于(不太可能)可能破坏您查询的未来主要 Postgres 版本中的更改更简单且具有弹性。

dbfiddle在这里