我有一个enum类型的表,我创建了一个函数来向该表添加数据.我希望该函数在接受什么方面是慷慨的,所以我将text作为枚举类型,并希望稍后对其进行强制转换.

这是枚举:

CREATE TYPE public.enum_log_priority AS ENUM (
    'critical','error','warning','notice','debug'
);

这就是功能:

CREATE OR REPLACE FUNCTION public.log_write(
    _message text,
    _priority text
) RETURNS integer AS
$body$
BEGIN
    _priority = lower(_priority);
    INSERT INTO log (message, priority) VALUES (_message, _priority);

    RETURN 0;
END
$body$
LANGUAGE 'plpgsql';

我知道这行不通:

错误:"priority"列的类型为enum_log_priority,但表达式的类型为text

但我该怎么做呢?

推荐答案

Postgresql相关问答推荐

如何在查询空字段时设置pgtype.comb为默认值?

JPA将没有时区的Postgres时间戳调整为服务器时区

将数组的所有元素循环到jsonb中并修改值

Power BI + Postgres:只读用户

使用 select 在带有特殊字符的字符串中查找数据

在 SQL 上返回负值

查找列中的数据是否满足sql中的数据类型条件

如何在 postgresql 中创建一个空的 JSON 对象?

PostgreSQL比较两个jsonb对象

使用 ON CONFLICT 从 INSERT 返回行,无需更新

INSERT RETURNING 是否保证以 right的顺序返回?

等效于 Postgresql 中的 FOUND_ROWS() 函数

SQLAlchemy、Psycopg2 和 Postgresql 复制

如何在 Postgresql 中正确使用 FETCH FIRST?

我怎样才能知道 Postgresql 表空间中有什么?

使用 pg-promise 插入多条记录

在同一分区上应用多个窗口函数

在 Postgresql 中拆分逗号分隔的字段并对所有结果表执行 UNION ALL

Postgresql varchar 是否使用 unicode 字符长度或 ASCII 字符长度计算?

如何在 psql 中设置默认显示模式