我有兩個表格(在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