我正在尝试创建一个触发函数,该触发函数仅在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$;
但是,当我尝试创建函数时,出现此错误
我不确定自己在做什么错,因为根据文档,此语法正确。删除函数周围的引号将不起作用,因为名称区分大小写,并且仍然是语法错误。
我使用的是“ PostgreSQL 9.5.14”版本
答案 0 :(得分:1)
您只需要调用该函数:
...
perform updateUserStats(NEW.userId);
...
您还错过了END IF
和RETURN NULL
之后的分号
答案 1 :(得分:1)
您似乎缺少perform
关键字:
IF (TG_OP = 'INSERT') THEN
PERFORM "updateUserStats"(NEW."userId");
ELSIF (TG_OP = 'DELETE') THEN
PERFORM "updateUserStats"(OLD."userId");
END IF;