PostgreSQL. Ошибка создания триггера
Создаю триггер:
CREATE TRIGGER tr_fa_change
AFTER INSERT
ON lcs.fact_amount
FOR EACH ROW
EXECUTE PROCEDURE lcs.c_crosstab();
И выходит ошибка:
ERROR: function lcs.c_crosstab() does not exist
Функция c_crosstab() в схеме lcs существует. Даже попробовал перенести её в public... ошибка осталась.
Подскажите в чем может быть ошибка?
ЗЫ: Функция c_crosstab()
CREATE OR REPLACE FUNCTION lcs.c_crosstab(eavsql_inarg character varying, resview character varying, rowid character varying, colid character varying, val character varying)
RETURNS void
LANGUAGE plpgsql
AS $function$
DECLARE
casesql varchar;
dynsql varchar;
r record;
BEGIN
dynsql = '';
FOR r IN
SELECT
*
FROM
pg_views
WHERE
lower(viewname) = lower(resview)
LOOP
EXECUTE 'DROP VIEW IF EXISTS ' || resview || ' CASCADE';
END LOOP;
casesql = 'SELECT DISTINCT ' || colid || ' AS v from (' || eavsql_inarg || ') eav ORDER BY ' || colid;
FOR r IN EXECUTE casesql LOOP
dynsql = dynsql || ', ' || 'CASE WHEN ' || colid || '=''' || r.v || ''' THEN ' || val || ' ELSE NULL END AS ' || r.v;
END LOOP;
dynsql = 'CREATE VIEW ' || resview || ' AS SELECT ' || rowid || dynsql || ' from (' || eavsql_inarg || ') eav ORDER BY ' || rowid;
RAISE NOTICE 'dynsql %1',
dynsql;
EXECUTE dynsql;
EXECUTE 'CREATE VIEW v_crosstab_work AS (SELECT vct.*, sb.branch_name, vt.branch_id, vt.parent_id, vt.fdate, vt.branch_name FROM v_temp vt LEFT JOIN ' || resview || ' vct ON vt.id = vct.id ORDER BY vt.id)';
END;
$function$
;
Источник: Stack Overflow на русском