【发布时间】:2019-05-31 16:30:28
【问题描述】:
我有一个函数触发器,它为一列提供几何图形,该几何图形是从另一列用 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();
【问题讨论】:
-
geom_js来自哪里?可以通过使用 BEFORE 触发器并编写NEW.geom = ST_SetSRID(ST_GeomFromGeoJSON(NEW.geom_js),4326);而不是整个更新语句来简化它 -
否则,如果输入
geom_js没问题,说明安装了PostGIS的schema(如果安装了...)不在用户运行该函数的搜索路径中。 stackoverflow.com/questions/48407622/… -
geom_js 与 Web 表单中的其他字段一起出现。
-
我会用这个
BEFORE trigger and writing NEW.geom = ST_SetSRID(ST_GeomFromGeoJSON(NEW.geom_js),4326);替换SET geom =...? -
好吧,我告诉你什么。你的问题让我找到了正确的地方,我有类似的错误,结果是一个触发器,我什至不知道我们的数据库中有触发器!所以谢谢!
标签: sql postgresql triggers