PostgreSQL:如果ST_Within(A,B)更新表B时更新表A中的A列

时间:2018-02-27 16:21:38

标签: postgresql postgis

我正在尝试创建一个在修改表B(多边形)时更新表A(点)的函数。必须在A中更改对B的引用。我无法使其工作。

CREATE OR REPLACE FUNCTION maj_A()
    RETURNS trigger AS $foo$    
BEGIN
    UPDATE public."A" AS A
    SET A.a = B.a, 
        A.b = B.b
    FROM public.B AS B
    WHERE ST_WITHIN(A.geom, B.geom) AND NEW.geom <> OLD.geom;
    RETURN NEW;
END;

$foo$ LANGUAGE plpgsql;

我正在使用postgre 10和postgis 2.4

1 个答案:

答案 0 :(得分:0)

以下代码回答了我的需求。

https://gist.github.com/neogis-de/a1d08c38d8b9c5d316c7

它根据重叠多边形的修改更新点图层。它只将多边形引用归属于基础点,而不会将任何内容更改为其中的点,而不再是该点。