postgresql 9.5在视图中更新虚拟列



我正在使用PostgreSQL与PostGIS和QGIS进行GIS目的,但我认为我在这里可能会发现比GIS.stackexchange.com更多的信息,因为我的问题与GIS并不直接相关。p>我随意使用对用户的特定需求来使用对文凭数据的看法,例如他们可以像在数据库中一样访问数据,但只需提供所需的内容。我在我的观点中添加了一些规则,以使它们在QGIS中"可更新",并直接使用户"可行"。

QGIS中的显示基于属性,但是由于不同的人可能会同时访问相同的数据,并且他们可能希望根据需要显示和隐藏其中的某些数据(地图打印一次(。因此,我正在寻找一种有可能为每种视图进行特定显示的方法,我考虑在视图定义中简单地添加一个"虚拟"列,例如像这样的布尔值:

CREATE VIEW view1 AS
SELECT oid, column1, True as display from table1;

,但我希望我的用户能够更改此列的值,以简单地将其出现或消失从画布中的对象(考虑到此参数,带有规范的基本样式(。显然,由于更新与视图的定义相抵触。

有人知道如何实现这一目标吗?也许是一个实现的视图(但我很喜欢常规视图的动态(?

谢谢。

如果从表中读取唯一的ID字段(即,它不是通过row_number((track动态创建的,通常与qGIS中的空间视图一起使用(,则可以创建一个可见性管理器表并在视图中使用它。您可以通过视图有一张桌子或所有桌子。类似的东西:

create table visibility_manager (oid bigint, visibility_status boolean, viewname text);

CREATE VIEW view1 AS
SELECT table1.oid, column1, coalesce(visibility_status,true) as display 
    from table1 
    left outer join visibility_manager 
    on (table1.oid = visibility_manager.oid and visibility_manager.viewname = 'view1');

看到它在行动中:http://rextester.com/ozpn1777

最新更新