【发布时间】:2016-07-29 13:28:24
【问题描述】:
我在 PostgreSQL 9.5 中工作,我有这两个表:
表事件:
oid integer
description integer,
geom geometry(Point,4326),
和表网格:
oid integer,
number integer,
geom geometry(Polygon,4326)
每次将一个点添加到表 incident 我希望字段 description 填充该点相交的网格编号。为了实现这一点,我创建了这个触发器:
CREATE OR REPLACE FUNCTION get_ortofoto_incidentes()
RETURNS TRIGGER AS
$BODY$
BEGIN
SELECT g.number INTO NEW.description
FROM incident AS i, grid AS g
WHERE st_intersects(new.geom, g.geom) ; --
RETURN NEW;
END;
$BODY$
LANGUAGE 'plpgsq;
并将其添加到表事件:
CREATE TRIGGER get_ortofoto_incidentes
BEFORE INSERT OR UPDATE ON incidentestest
FOR each row
EXECUTE PROCEDURE get_ortofoto_incidentes();
问题在于,当调用触发器函数时,属性description 的第一行仍然为空,但在触发器按预期工作之后。这就是我得到的:
oid | description
1 | null
2 | 236541
3 | 695489
4 | 325687
... | ....
知道为什么触发器没有更新表的第一行吗?
谢谢
【问题讨论】:
标签: postgresql triggers gis