Първо, не мога да се съглася повече с Франк. Използвайте 9.1 и тригер за таблица. Въпреки това е възможно нито това, нито изгледът да решат проблема ви.
Опитайте да направите ръчно UPDATE
според вашия изглед от psql. Ако това работи и ако се свържете, използвайки същия потребителски идентификатор с opengeospatial, тогава бих казал, че проблемът може да е, че opengeospatial е твърде умен за собственото си добро и "знае", че изгледите не могат да бъдат актуализирани. Или това, или се опитва INSERT
и не сте добавили съответстващ INSERT
управлявайте според вашето мнение.
Съобщението „filedata_view е само за четене“ не е съобщение, което PostgreSQL може да произведе. Чудя се дали opengeospatial използва JDBC метаданни (ако приемем, че е Java) или INFORMATION_SCHEMA или подобно за заявка към схемата, определя, че filedata_view
е изглед и заключава, че следователно не може да го актуализира.
Ако беше съобщение от PostgreSQL, вместо това щеше да пише:
# UPDATE customer_v SET customer_number = 1234;
ERROR: cannot update view "the_view"
HINT: You need an unconditional ON UPDATE DO INSTEAD rule or an INSTEAD OF UPDATE trigger.
Може да е информативно да активирате log_statement = 'all'
в postgresql.conf
и презаредете postgresql. Тествайте отново, след това погледнете в регистрационните файлове и вижте какво точно прави opengeospatial.
Ако се окаже, че открива изглед, може да успеете да заобиколите проблема с ON SELECT
правило, добавено към празна таблица. Таблицата ще работи точно като изглед, но GeoServer няма да може да каже, че е изглед и може да се съгласи да пише в него.