首页 > 解决方案 > 如何使用演员表的价值进行更新?

问题描述

我有一个INSERT INTO查询,它从 html 表单中获取输入并将其插入到 postgres 上的表中,其中一个列的值是 GeoJSON。现在我正在尝试准备一个触发器函数,该函数在INSERT查询后获取 json 并将其转换为几何图形并将此几何图形插入同一张表的另一列中。

SELECT ST_GeomFromText( ST_AsText( CAST(ST_GeomFromGeoJSON(t1."column-name") AS TEXT) ), 4326 ) FROM (SELECT "column-name" FROM table-name ORDER BY id DESC LIMIT 1) AS t1;

通过此查询,我从插入的最后一行获取 GeoJSON 并将其转换为几何,但我不知道如何将此几何值插入另一列。

标签: sqlpostgresqlgeometrypostgisgeojson

解决方案


我设法提出了一个解决我的问题的查询:

UPDATE table-name SET column-name = (SELECT ST_GeomFromText( ST_AsText( CAST(ST_GeomFromGeoJSON(t1.column-name) AS TEXT) ), 4326 ) FROM (SELECT column-name FROM table-name ORDER BY id DESC LIMIT 1) AS t1) WHERE id IN(SELECT id FROM table-name ORDER BY id DESC LIMIT 1 );

使用此查询,我从插入表中的最后一行中获取 GeoJSON,并将其转换为几何图形,并将此几何图形插入到我获取 GeoJson 的同一行的另一列中。

重要提示:存储 GeoJSON 的列具有字符变化的数据类型。

希望这是有道理的,英语不是我的第一语言。


推荐阅读