Tout d'abord, je ne pourrais pas être plus d'accord avec Frank. Utilisez 9.1 et un déclencheur de table. Cependant, il est possible que ni cela ni une vue ne résolvent votre problème.
Essayez de faire une UPDATE
manuelle sur votre vue de psql. Si cela fonctionne, et si vous vous connectez en utilisant le même ID utilisateur avec opengeospatial, alors je dirais que le problème pourrait être qu'opengeospatial est trop intelligent pour son propre bien et "sachant" que les vues ne peuvent pas être mises à jour. Soit ça, soit il essaie un INSERT
et vous n'avez pas ajouté de INSERT
correspondant règle sur votre point de vue.
Le message "filedata_view est en lecture seule" n'est pas un message que PostgreSQL peut produire. Je me demande si opengeospatial utilise les métadonnées JDBC (en supposant que c'est Java) ou INFORMATION_SCHEMA ou similaire pour interroger le schéma, détermine que filedata_view
est une vue, et conclut qu'il ne peut donc pas la mettre à jour.
S'il s'agissait d'un message de PostgreSQL, il dirait à la place :
# 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.
Il peut être instructif d'activer log_statement = 'all'
dans postgresql.conf
et rechargez postgresql. Re-testez, puis regardez dans les journaux pour voir ce que fait exactement opengeospatial.
S'il s'avère qu'il détecte une vue, vous pourrez peut-être contourner le problème avec un ON SELECT
règle ajoutée à une table vide. La table fonctionnera comme une vue, mais GeoServer ne pourra pas dire qu'il s'agit d'une vue et pourrait accepter d'y écrire.