在触发器函数的if语句内调用函数时的语法错误

时间:2018-09-11 08:43:00

标签: postgresql plpgsql

我正在尝试创建一个触发函数,该触发函数仅在if语句中调用一个函数:

CREATE OR REPLACE FUNCTION public."onTrack"()
    RETURNS trigger
    LANGUAGE 'plpgsql'
AS $BODY$
BEGIN
    IF (TG_OP = 'INSERT') THEN
        "updateUserStats"(NEW."userId");
    ELSIF (TG_OP = 'DELETE') THEN
        "updateUserStats"(OLD."userId");
    END IF

    RETURN NULL
END
$BODY$;

但是,当我尝试创建函数时,出现此错误

enter image description here

我不确定自己在做什么错,因为根据文档,此语法正确。删除函数周围的引号将不起作用,因为名称区分大小写,并且仍然是语法错误。

我使用的是“ PostgreSQL 9.5.14”版本

2 个答案:

答案 0 :(得分:1)

您只需要调用该函数:

...
perform updateUserStats(NEW.userId);
...

您还错过了END IFRETURN NULL之后的分号

答案 1 :(得分:1)

您似乎缺少perform关键字:

IF (TG_OP = 'INSERT') THEN
    PERFORM "updateUserStats"(NEW."userId");
ELSIF (TG_OP = 'DELETE') THEN
    PERFORM "updateUserStats"(OLD."userId");
END IF;
相关问题