我的数据库中有两个带有几何列的表。
表字段存储具有与各个字段相关的常规信息的面,第二个表存储属于这些字段的面。
将新记录插入第二张表时,我想使用 PL / PGSQL 中编写的触发函数,根据字段中的信息填充记录新记录/形状所属的字段。
我能够以这种方式输入 field_id ,可以从 fields 中正确查找,但是其他字段仍然是我输入的默认值。 我认为我的错误出现在条件语句的后半部分:
IF
(SELECT COUNT(*)
FROM
(SELECT id
FROM fields
WHERE st_intersects(NEW.geom, fields.geom)) AS foo) > 0
THEN
SELECT field_id,field_name,field_accessdate
INTO NEW.field_id,NEW.field_name,NEW.access_date
FROM (SELECT geom,field_id FROM fields) AS bar
WHERE st_intersects(NEW.geom, bar.geom);
RETURN NEW;
END IF;
field_id , field_name 和 field_accessdate 应该与该字段匹配,但是目前只有 field_id 匹配,另外两个字段包含我的导入代码(“ tmp”,“ 1111-11-11”)提供的临时字符串。