是否可以在 postgres 11.x 中创建 smallints 的 ENUM?
Is it possible to create an ENUM of smallints in postgres 11.x?
我想创建一个枚举类型来约束 pl/pgsql 函数接受参数 1、2 或 3。枚举类型似乎是解决此问题的方法。
我试过如下创建我的枚举:
CREATE TYPE my_enum AS ENUM ('1'::smallint, '2'::smallint);
/* ^ syntax error here */
根据 PostgreSQL documentation,ENUM
类型总是固定值:
An enum value occupies four bytes on disk. The length of an enum value's textual label is limited by the NAMEDATALEN
setting compiled into PostgreSQL; in standard builds this means at most 63 bytes.
因此,您不能将其转换为 smallint
-- 抱歉!
相反,如果您关心 space,我想您可以创建一个引用 table 并创建一个外键约束。
披露:我为 EnterpriseDB (EDB)
工作
我想创建一个枚举类型来约束 pl/pgsql 函数接受参数 1、2 或 3。枚举类型似乎是解决此问题的方法。
我试过如下创建我的枚举:
CREATE TYPE my_enum AS ENUM ('1'::smallint, '2'::smallint);
/* ^ syntax error here */
根据 PostgreSQL documentation,ENUM
类型总是固定值:
An enum value occupies four bytes on disk. The length of an enum value's textual label is limited by the
NAMEDATALEN
setting compiled into PostgreSQL; in standard builds this means at most 63 bytes.
因此,您不能将其转换为 smallint
-- 抱歉!
相反,如果您关心 space,我想您可以创建一个引用 table 并创建一个外键约束。
披露:我为 EnterpriseDB (EDB)
工作