【发布时间】:2018-09-11 08:42:59
【问题描述】:
我正在尝试创建一个触发器函数,它只是在 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”版本
【问题讨论】:
-
perform updateUserStats(NEW.userId);? -
你也错过了
END IF和RETURN NULL之后的分号 -
哦,这似乎行得通。让它成为答案?不敢相信我在阅读文档时错过了这一点。
-
不相关,但是:你真的应该避免使用带引号的标识符(
"onTrack"、"userId"、...),它们带来的麻烦多于值得。 -
它们以这种方式命名是为了保持一致性。我对它们根本没有任何问题,这取决于 imo 的偏好。
标签: postgresql plpgsql