我对postgis / postgres完全陌生,并尝试构建一个触发器来更新包含道路范围多边形(lsg_maintainance_responsibility)的表中的字段,该字段包含在另一个表(lsg_esu_lines)中的相关中心线的长度
触发功能:
DECLARE g integer;
BEGIN
g:=NEW.esu_id;
UPDATE gazetteer.lsg_maintainance_responsibility a
SET poly_length= ST_Length(b.geometry) from lsg_esu_lines b
inner join lsg_maintainance_responsibility on a.esu_id = b.esu_id
WHERE a.type='Carriageway' and a.esu_id = g;
RETURN NEW;
失败,出现" ERROR:对表a"
的FROM子句条目的无效引用从阅读其他帖子,是因为首先执行join子句,在这种情况下它显然不知道是什么?麻烦是由于我缺乏sql技能我尝试修复它只会导致另一个错误。
由于
答案 0 :(得分:0)
我不确定您是否可以update这种方式使用联接,但是使用where子句替换联接应该有效:
UPDATE gazetteer.lsg_maintainance_responsibility a
SET poly_length = ST_Length(b.geometry)
FROM lsg_esu_lines b
WHERE
a.esu_id = b.esu_id
AND a.type='Carriageway'
AND a.esu_id = g;
RETURN NEW;