sql >> Database teknologi >  >> RDS >> PostgreSQL

GeoServer vil ikke skrive til min PostgreSQL-opdaterbare visning

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.



  1. MySQL python-stik:ikke alle argumenter konverteres under bytes-formatering

  2. Skrivning af en SQL-forespørgsel til SELECT-element fra følgende tabel

  3. Hvorfor INNER JOIN ikke lige (!=) hænger for evigt

  4. Sådan grupperer du hierarkiske relationer i SQL Server