Postgresql触发器失败错误
我创建了一个触发器,当我运行触发器时,我得到了一个错误。将数据插入adpes.add_项目表时。我想扣动扳机。但是我犯了一个错误。我怎样才能解决这个问题?错误是 无法执行SQL。错误:错误:函数st_point(双精度,双精度)不存在第1行:…s.adpes_项目集geom=st_变换(st_SetGrid)(st_point)(n..^提示:没有函数与给定的名称和参数类型匹配。您可能需要添加显式类型转换。查询:更新adpes.adpes_项目集geom=st_变换(st_SetGrid)(st_point(new.project_lng::double precision,new.project_lat::double precision),4326),500000)上下文:PL/pgSQL函数在SQL语句的第3行添加_project_2()Postgresql触发器失败错误,postgresql,Postgresql,我创建了一个触发器,当我运行触发器时,我得到了一个错误。将数据插入adpes.add_项目表时。我想扣动扳机。但是我犯了一个错误。我怎样才能解决这个问题?错误是 无法执行SQL。错误:错误:函数st_point(双精度,双精度)不存在第1行:…s.adpes_项目集geom=st_变换(st_SetGrid)(st_point)(n..^提示:没有函数与给定的名称和参数类型匹配。您可能需要添加显式类型转换。查询:更新adpes.adpes_项目集geom=st_变换(st_SetGrid)(st
您是否安装了postgis?是的,我安装了如果您只是尝试执行此操作:选择st_point(10::float,20::float)会发生什么?我会收到相同的错误。
CREATE OR REPLACE FUNCTION adpes.add_project_2()
RETURNS trigger AS
$BODY$
BEGIN
UPDATE adpes.adpes_project SET geom= st_transform(st_setsrid(st_point(project_lng::double precision,project_lat::double precision),4326),500000);
UPDATE adpes.adpes_project t1 SET k1k = t2.fish_id from spatial.fish_net_k1k t2 where st_intersects(t1.geom,t2.geom);
UPDATE adpes.adpes_project t1 SET k20k = t2.fish_id from spatial.fish_net_k20k t2 where st_intersects(t1.geom,t2.geom);
UPDATE adpes.adpes_project t1 SET pro_cluster_id = (id::Text || '' || k20k::Text)::bigint ;
RETURN NEW;
END;
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100;
ALTER FUNCTION adpes.add_project_2()
OWNER TO postgres;
CREATE TRIGGER add_project_2
BEFORE INSERT
ON adpes.adpes_project
FOR EACH ROW
EXECUTE PROCEDURE adpes.add_project_2();