如何让 PostgreSQL 接受文本作为枚举值

问题描述 投票:0回答:1

当我有一个带有

ENUM
列的表格时,我会像这样插入:

UPDATE table SET enum_col = 'enum_value';

这工作正常,但是当显式转换它时,我收到错误:

UPDATE table SET enum_col = 'enum_value'::text;

ERROR:  column "enum_col" is of type some_enum_type but expression is of type text
LINE 1: UPDATE table SET enum_col = 'enum_value'::text;
                                    ^
HINT:  You will need to rewrite or cast the expression.

我理解这个错误,但是我可以使用一些设置,以便 PostgreSQL 无论如何都会接受它吗?

(一些额外的背景知识,我正在使用 Npgsql 更新数据库中的数据,即使我没有将

::text
放入查询中,我确实收到此错误。看起来 Npgsql 在使用参数化时添加了显式值类型查询。)

postgresql types npgsql
1个回答
5
投票

您可以创建从

text
到枚举类型的强制转换:

CREATE TYPE my_enum AS ENUM ('one', 'two', 'three');

CREATE CAST (text AS my_enum) WITH INOUT AS ASSIGNMENT;

CREATE TABLE mytab (enum_col my_enum);

INSERT INTO mytab VALUES ('one'::text);
INSERT 0 1
© www.soinside.com 2019 - 2024. All rights reserved.