首页 > 解决方案 > 选择或插入时自动调用列上的函数

问题描述

我试图找到一种方法来自动调用特定列上的函数,而不是在 sql 语句中实际调用它。

我将 PostGIS 与不同几何类型的类型一起使用。我需要以众所周知的二进制 (WKB) 格式插入和选择所述几何列,这需要调用ST_GeomFromWKB()插入 WKB,并ST_AsBinary()以相同格式检索数据。

假设我有一个定义的表:

CREATE TABLE IF NOT EXISTS geomtest (
    id SERIAL PRIMARY KEY,
    name TEXT NOT NULL,
    geom geometry(POLYGON, 4326) NOT NULL
);

我想定义一种在geom列上调用适当函数的方法,同时单独引用列,例如,如果我要调用:

SELECT * FROM geomtest;

在幕后,我想致电:

SELECT id, name, ST_AsBinary(geom) FROM geomtest;

插入也是一样,但ST_GeomFromWKB()在幕后调用。

请注意,默认返回的类型是geometry(十六进制格式),但调用 ST_AsBinary() 后,类型是bytea.

我试图使用视图来让它工作。它适用于选择,但不适用于插入。我也研究了规则和触发器,但我不确定是否可以做我希望的事情。

这个问题有sql解决方案吗?

谢谢

标签: sqlpostgresqltriggerspostgiswkb

解决方案


推荐阅读