For det første kunne jeg ikke være mere enig med Frank. Brug 9.1 og en tabeludløser. Det er dog muligt, at hverken det eller en visning vil løse dit problem.
Prøv at lave en manuel UPDATE
på din udsigt fra psql. Hvis det virker, og hvis du forbinder med det samme bruger-id med opengeospatial, så vil jeg sige, at problemet kunne være, at opengeospatial er for smart til sit eget bedste og "vidde", at visninger ikke kan opdateres. Enten det, eller også prøver den en INSERT
og du har ikke tilføjet en matchende INSERT
bestemme over dit syn.
Meddelelsen "filedata_view er skrivebeskyttet" er ikke en besked, som PostgreSQL kan producere. Jeg spekulerer på, om opengeospatial bruger JDBC-metadata (forudsat at det er Java) eller INFORMATION_SCHEMA eller lignende til at forespørge på skemaet, bestemmer, at filedata_view
er en visning og konkluderer, at den derfor ikke kan opdatere den.
Hvis det var en besked fra PostgreSQL ville der i stedet stå:
# 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.
Det kan være informativt at aktivere log_statement = 'all'
i postgresql.conf
og genindlæs postgresql. Test igen, og se derefter i logfilerne for at se, hvad opengeospatial præcist gør.
Hvis det viser sig, at den registrerer en visning, kan du muligvis løse problemet med en ON SELECT
regel tilføjet til en tom tabel. Tabellen fungerer ligesom en visning, men GeoServer vil ikke være i stand til at fortælle, at det er en visning og vil muligvis acceptere at skrive til den.