Приветствую
Дома установлена версия 8.0 для windows
На сервере, где хостимся - 7.4.3 - linux fedore core 2
Есть таблица tablename, есть триггер BEFORE INSERT
В триггерной функции идет обращение к другой функции передачей ей
такого параметра, как new, т.е. новые введенные значения полей для
обработки
Примерно выглядет так
PERFORM some_func(new);
Функция описана
CREATE FUNCTION some_func(tablename) ...
я выделил часть кода функцию, т.к. там приличный кусок, который
необходим при разных триггерах и при разных условиях
в 8.0 это работает без проблем, но после установки на сервер, выдает
ошибку
ERROR: NEW used in query that is not in a rule CONTEXT: PL/pgSQL
function ...
это отличия версий ПГ?
или в 7.4 я должен что-то декларировать дополнительно и как?
---
затем попробовал кое-что:
попробовал передавать не new, а создал type tablename_fields с полями
с таблицы tablename, и заменил функцию на
CREATE FUNCTION some_func(tablename_fields) ...
f в declare объявил f tablename_fields%rowtype;
и вызываю функцию
f.field1 := new.field1;
f.field2 := new.field2;
...
PERFORM some_func(f);
но теперь ошибка на сервере хостера
ERROR: column "f" does not exist CONTEXT: PL/pgSQL function ...
Подскажите, как передать функции параметры?
Также буду благодарен за ссылку на раздел мануала, где это более
конкретно описано
С уважением, Zet.