trigger函数在表中的多个插入上工作不正常

gcxthw6b  于 2021-07-26  发布在  Java
关注(0)|答案(0)|浏览(151)

所以基本上我有一个表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'类型时,它会按预期工作,但是我不想鼓励人们不输入所有的数据
如何修复代码?

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题