Как исправить 'SQLSTATE [42883]: неопределенная функция: 7 ОШИБКА' на postgres? - PullRequest
0 голосов
/ 31 мая 2019

У меня есть триггер функции, который подает столбец с геометрией, преобразованной из другого столбца с помощью json.До недавнего времени это работало без проблем, когда я начал получать эту ошибку: 'SQLSTATE [42883]: неопределенная функция: 7 ОШИБКА ... Ни одна функция не соответствует заданному имени и типу аргумента.Возможно, вам понадобится добавить явные приведения типов. '

Это скрипт для моей функции:

CREATE OR REPLACE FUNCTION update_formulario_ep()
RETURNS trigger AS $teste_trigger$
BEGIN
UPDATE formulario.formulario_ep
SET geom = (SELECT ST_GeomFromText( ST_AsText( CAST(ST_GeomFromGeoJSON(geom_js) AS TEXT) ), 4326 ));
RETURN NEW;
END;
$teste_trigger$ LANGUAGE plpgsql;

И это скрипт для триггера:

CREATE TRIGGER update_allrows_trigger_ep
AFTER INSERT ON formulario.formulario_ep
FOR EACH ROW
EXECUTE PROCEDURE update_formulario_ep();

1 Ответ

0 голосов
/ 31 мая 2019

Вы должны убедиться, что схема, в которой установлен PostGIS, доступна в search_path пользователя, выполняющего вставку, как описано в этом post .

Также ваш триггер можетбыть значительно упрощенным, сделав его триггером BEFORE, позволяющим просто установить значение NEW.geom:

CREATE OR REPLACE FUNCTION update_formulario_ep()
RETURNS trigger AS $teste_trigger$
 BEGIN
   NEW.geom = ST_SetSRID(ST_GeomFromGeoJSON(NEW.geom_js),4326);
   RETURN NEW;
  END;
$teste_trigger$ LANGUAGE plpgsql;


CREATE TRIGGER update_allrows_trigger_ep
BEFORE INSERT ON formulario.formulario_ep
FOR EACH ROW
EXECUTE PROCEDURE update_formulario_ep();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...