我有一个函数触发器,该触发器将几何形状从另一列转换为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();
答案 0 :(得分:0)
您需要确保执行插入操作的用户的search_path中提供了安装PostGIS的架构,如本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();