【问题标题】:Postgis/Postgres - ERROR: invalid reference to FROM-clause entry for table "a"Postgis/Postgres - 错误:对表“a”的 FROM 子句条目的引用无效
【发布时间】:2014-08-26 19:39:30
【问题描述】:

我对 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;

因“错误:对表 a 的 FROM 子句条目的引用无效”而失败

通过阅读其他帖子,是否因为首先执行了 join 子句,在这种情况下它显然不知道 a 是什么?问题是由于我缺乏 sql 技能,我尝试修复它的所有内容都会导致另一个错误。

谢谢

【问题讨论】:

标签: postgresql postgis


【解决方案1】:

我不确定您是否可以通过这种方式在 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

【讨论】:

  • 你也打败了我吧。更新,设置,从,Postgres中的顺序在哪里。
猜你喜欢
  • 2021-10-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-29
  • 1970-01-01
  • 2019-12-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多