Ten eerste kon ik het niet meer eens zijn met Frank. Gebruik 9.1 en een tabeltrigger. Het is echter mogelijk dat noch dat, noch een weergave uw probleem zal oplossen.
Probeer een handmatige UPDATE
op uw uitzicht vanaf psql. Als dat werkt, en als je verbinding maakt met dezelfde gebruikers-ID met opengeospatial, dan zou ik zeggen dat het probleem zou kunnen zijn dat opengeospatial te slim is voor zijn eigen bestwil en "wetende" dat weergaven niet kunnen worden bijgewerkt. Ofwel dat, of het probeert een INSERT
en je hebt geen overeenkomende INSERT
. toegevoegd regel op uw mening.
Het bericht "filedata_view is alleen-lezen" is geen bericht dat PostgreSQL kan produceren. Ik vraag me af of opengeospatial JDBC-metadata gebruikt (ervan uitgaande dat het Java is) of INFORMATION_SCHEMA of iets dergelijks om het schema te doorzoeken, bepaalt dat filedata_view
is een weergave en concludeert dat deze deze daarom niet kan bijwerken.
Als het een bericht van PostgreSQL zou zijn, zou het in plaats daarvan zeggen:
# 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.
Het kan informatief zijn om log_statement = 'all'
in te schakelen in postgresql.conf
en herlaad postgresql. Test opnieuw, kijk dan in de logs om te zien wat opengeospatial precies doet.
Als blijkt dat het een weergave detecteert, kunt u het probleem mogelijk omzeilen met een ON SELECT
regel toegevoegd aan een lege tabel. De tabel werkt net als een weergave, maar GeoServer kan niet zien dat het een weergave is en kan ermee instemmen om ernaar te schrijven.