【发布时间】:2015-07-28 15:41:46
【问题描述】:
我正在编写一个 postgresql 函数,但我似乎无法找到错误所在。 Postgresql 版本为 9.4。
以下是函数:
CREATE FUNCTION custom_function1()
RETURNS trigger
LANGUAGE plpgsql
AS
$$
DECLARE base_val integer;
BEGIN
base_val := (EXTRACT(YEAR FROM now())::integer * 10000000000);
IF (currval('custom_sequence') < base_val) THEN
setval('custom_sequence', base_val);
END IF;
NEW.id := custom_function2();
RETURN NEW;
END;
$$;
我的 custom_sequence 格式为 YYYY0000000000(例如 20150000000000)。
所以这基本上(应该做)是检查 base_val(当年的最小值)是否大于 currval(当前 custom_sequence 值)并更新 custom_sequence 值。然后它为使用函数 custom_function2 生成的序列返回一个新值(稍微格式化它)。
当我尝试执行此操作时,它给了我:
“setval”处或附近的语法错误
我对 postgresql 和编写函数都很陌生,所以我可能没有看到明显的错误。如果有人可以帮助我,将不胜感激,谢谢。
【问题讨论】:
标签: database postgresql plpgsql