У меня есть две таблицы (в 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
^
Обновление:
@ Томалак: Спасибо за функцию и обновление оператора обновления (не смог устоять перед каламбуром).
После большого количества поисков я понял, что функция не должна иметь никаких параметров и использовать NEW.col_name и должна возвращать TRIGGER.