Postgis / Postgres - 错误:对表" a"的FROM子句条目的无效引用

时间:2014-08-26 11:04:13

标签: postgresql postgis

我对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技能我尝试修复它只会导致另一个错误。

由于

1 个答案:

答案 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;

Sample SQL Fiddle