我有一个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
但我该怎么做呢
4条答案
按热度按时间nmpmafwu1#
在插入过程中使用如下语法
请看一些链接以及
http://www.postgresql.org/docs/9.1/static/datatype-enum.html
Inserting into custom SQL types with prepared statements in java
java enum and postgresql enum
brccelvz2#
按如下方式更改函数:
|sql fiddle演示|
4dc9hkyq3#
Postgres也支持cast函数:
vmpqdwk34#
考虑到有时(例如在Prisma原始查询中)需要将枚举类型放在引号内。