【发布时间】:2012-07-25 18:44:13
【问题描述】:
从this earlier question 开始,我使用的是 PostgreSQL 8.4,但无法更新视图。
我有一个看法:
CREATE VIEW filedata_view
AS SELECT num, id, ST_TRANSFORM(the_geom,900913) AS the_geom
FROM filedata
并且想从我的应用程序抛出 Geoserver 更新它。但是报错:
<ServiceExceptionReport version="1.2.0" xmlns="http://www.opengis.net/ogc" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.opengis.net/ogc http://schemas.opengis.net/wfs/1.0.0/OGC-exception.xsd">
<ServiceException> {http://www.opengeospatial.net/cite}filedata_view is read-only </ServiceException>
</ServiceExceptionReport>
所以 PostgresSql 中的视图是不可更新的。我需要创建规则或触发器来更新视图。
我试过了:
CREATE OR REPLACE RULE ins_view_2 AS
ON UPDATE TO filedata_view DO INSTEAD UPDATE filedata SET the_geom=ST_TRANSFORM(NEW.the_geom,70066)
WHERE num=NEW.num
但这没有帮助,我仍然遇到同样的错误。
我的错误在哪里?
【问题讨论】:
-
1) 请将表格定义和一些数据添加到您的问题中。 2)我似乎忘记了更新中的 id 字段(是 FK ...?) 3)您还应该为插入和删除案例创建规则。 4)错误源于您的框架,它检查目录并得出结论 filedata_view 是视图(并认为视图是 RO),请尝试首先从命令行调用它。 5) 在规则中始终使用完全限定名称(例如:
where fd.num=NEW.num)
标签: postgresql postgis geoserver postgresql-8.4