如何使用演员表中的值进行更新?

时间:2019-02-12 17:36:50

标签: sql postgresql geometry postgis geojson

我有一个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并将其转换为几何,但是我不知道如何在另一列中插入此几何值。

1 个答案:

答案 0 :(得分:0)

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

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的列的字符类型不同。

希望这很有道理,英语不是我的母语。