PostgreSQL Always功能使用

📅 2026/8/13 21:04:17
PostgreSQL Always功能使用
背景有些弱gis项目比如通讯行业大部分都是采集的poi点比如基站或者信令数据录入数据的应用都是用的XY坐标那如何再不改变应用的情况下可以在一些GIS软件是展示这些数据毕竟很多的GIS软件并不支持直接显示XY坐标解决方法可以通过在表中添加一个类型为geometry的字段然后利用PG的Generate Always功能自动更新该类型的值步骤create table testg (id serial primary key ,x double precision,y double precision, geom geometry(point,4326) generated always as ST_SetSRID(ST_MakePoint(x,y),4326) stored); insert into testg (x,y) values (12.34,34.3); insert into testg (x,y) values (23.34,44.3); select geom from testg; geom ---------------------------------------------------- 0101000020E6100000AE47E17A14AE28406666666666264140 0101000020E6100000D7A3703D0A5737406666666666264640 (2 行记录) select st_asewkt(geom) from testg; st_asewkt ----------------------------- SRID4326;POINT(12.34 34.3) SRID4326;POINT(23.34 44.3) create index on testg using gist(geom); CREATE INDEX \d testg 数据表 sde.testg 栏位 | 类型 | 校对规则 | 可空的 | 预设 ------------------------------------------------------------------------------------------------------------------- id | integer | | not null | nextval(testg_id_seq::regclass) x | double precision | | | y | double precision | | | geom | geometry(Point,4326) | | | generated always as (st_setsrid(st_makepoint(x, y), 4326)) stored 索引 testg_pkey PRIMARY KEY, btree (id) testg_geom_idx gist (geom)使用GeoScene Desktop展示如下