我有两个表(在 postgres 中) - 广告和日志。每次插入日志表后,根据操作,它应该增加 ads 表中列的计数。
我试图编写触发器将调用的函数,但是在尝试创建函数时会引发错误。我是 postgresql 触发器和函数的新手,所以有人可以指出这有什么问题。
create function update_ad_count (action character(4), ad_id INT) returns void
as $$case when action='VIEW' then
(UPDATE ads SET views = (SELECT views+1 FROM ads WHERE id=ad_id), updated = now() WHERE id=ad_id;)
end;$$
language sql
我得到的错误是
ERROR: syntax error at or near "case"
LINE 2: as $$case when action=\'VIEW\' then
^
更新: @Tomalak:感谢功能和更新更新语句(无法抗拒双关语)。
经过大量谷歌搜索后,我了解到该函数不应该有任何参数并使用 NEW.col_name 并且应该返回一个 TRIGGER。