Po pierwsze, nie mogłem się bardziej zgodzić z Frankiem. Użyj wersji 9.1 i wyzwalacza tabeli. Jednak jest możliwe, że ani to, ani widok nie rozwiążą twojego problemu.
Spróbuj wykonać ręcznie UPDATE
na twój widok z psql. Jeśli to zadziała i jeśli połączysz się za pomocą tego samego identyfikatora użytkownika z opengeospatial, powiedziałbym, że problem może dotyczyć opengeospatial, który jest zbyt sprytny dla własnego dobra i „wiedząc”, że widoki nie mogą być aktualizowane. Albo to, albo próbuje INSERT
a nie dodałeś pasującego INSERT
rządzić swoim poglądem.
Komunikat "filedata_view jest tylko do odczytu" nie jest komunikatem, który może wygenerować PostgreSQL. Zastanawiam się, czy opengeospatial używa metadanych JDBC (zakładając, że jest to Java) lub INFORMATION_SCHEMA lub podobnych do zapytania o schemat, określa, że filedata_view
jest poglądem i dochodzi do wniosku, że w związku z tym nie może go zaktualizować.
Gdyby była to wiadomość z PostgreSQL, zamiast tego powiedziałby:
# 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.
Pouczające może być włączenie log_statement = 'all'
w postgresql.conf
i przeładuj postgresql. Przetestuj ponownie, a następnie spójrz w dzienniki, aby zobaczyć, co dokładnie robi opengeospatial.
Jeśli okaże się, że wykrywa widok, możesz obejść ten problem za pomocą ON SELECT
reguła dodana do pustej tabeli. Tabela będzie działać jak widok, ale GeoServer nie będzie w stanie stwierdzić, że jest to widok i może zgodzić się na zapisanie do niego.