所以基本上我有一个表1,人们会定期插入,表2需要根据人们在表1上插入的内容进行更新
表1具有id整数类型text ref text geom polygon geometry
表2具有idb integer status integer ref text geom point geometry
用户有时可以批量插入到表1中。我更新table2的触发函数是
CREATE OR REPLACE FUNCTION table2update()
RETURNS trigger
LANGUAGE plpgsql
AS $function$
BEGIN
update table2 a set status = 50, ref = new."ref"
where new.type = 'POLE' and new."ref" is not null and st_contains(new.geom,a.geom);
RETURN new;
END;
$function$
;
触发
CREATE TRIGGER derp BEFORE INSERT ON table1 FOR EACH ROW EXECUTE PROCEDURE table2update();
人们在一个名为qgis的软件上进行插入操作,但它看起来如下所示
insert into table1(type,ref,geom)
values('POLE', 'derp','geom'),
('not pole', null, 'geom')
预期行为,表1中的多边形包含的表2中的所有行都将更新ref以及状态,但仅当表1中的插入类型为“pole”时
在实际行为中,所有的行都用状态更新,但是类型被完全忽略了——换句话说,ref保持为null,但是状态改变了。当用户粘贴一行'pole'类型时,它会按预期工作,但是我不想鼓励人们不输入所有的数据
如何修复代码?
暂无答案!
目前还没有任何答案,快来回答吧!