有没有办法确定 PostgreSQL 中的用户定义类型是否为 ENUM?
本质上我们有以下内容:
CREATE TYPE foo AS ENUM (
'Sometimes',
'You',
'Wanna',
'Go',
'Where Everybody Knows Your Name'
);
使用由以下实例化的表:
CREATE TABLE bar (
lyrics foo DEFAULT 'Wanna'::foo
);
我能够foo
从列中确定的类型lyrics
,但是,我无法找到一种方法来确定是否foo
是 ENUM。
foo
对于上下文,我需要此信息以编程方式获取给定列时的所有可能值的列表lyrics
。
与此类问题一样,
\set ECHO_HIDDEN on
命令会有所psql
帮助。\dT+
如果所讨论的类型是枚举,将显示枚举的可能值。输出背后的查询相当复杂,但可以简化它以满足您的需求,例如{NULL}
如果类型不是枚举,这将返回(其中包含 NULL 的数组),否则返回实际元素作为数组。如有必要,您可以进一步调整它。你可以做这样的事情,
您也可以创建一个简单的函数来执行此操作,