我有两个表格(在postgres中) - 广告和日志。在每次插入日志表后,根据操作,它应该增加广告表中列的数量。在postgres插入期间触发更新列
我试图写一个触发器将调用的函数,但它尝试创建该函数时会引发错误。我是新来的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。
我不确定返回触发器的函数是什么。在我的理解中,触发器是被定义的,而不是由函数返回的,但是我对postgres的了解并不多,所以我很高兴至少得到UPDATE语句。 ;-) – Tomalak 2009-01-26 19:18:08
谨慎地更新我的答案与您的发现,所以通过谷歌来到这里的其他人发现他们可以立即使用的东西? – Tomalak 2009-01-26 19:18:49