sql >> Base de Datos >  >> RDS >> PostgreSQL

GeoServer no escribirá en mi vista actualizable de PostgreSQL

Primero, no podría estar más de acuerdo con Frank. Use 9.1 y un disparador de mesa. Sin embargo, es posible que ni eso ni una vista resuelvan su problema.

Intenta hacer una UPDATE manual en su vista desde psql. Si eso funciona, y si se conecta usando la misma ID de usuario con opengeospatial, entonces diría que el problema podría ser que opengeospatial sea demasiado inteligente para su propio bien y "sabe" que las vistas no se pueden actualizar. O eso, o está intentando un INSERT y no ha agregado un INSERT coincidente regla en su vista.

El mensaje "filedata_view es de solo lectura" no es un mensaje que PostgreSQL pueda producir. Me pregunto si opengeospatial está usando metadatos JDBC (asumiendo que es Java) o INFORMACION_SCHEMA o similar para consultar el esquema, está determinando que filedata_view es una vista y concluye que, por lo tanto, no puede actualizarla.

Si fuera un mensaje de PostgreSQL, diría:

# 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.

Podría ser informativo habilitar log_statement = 'all' en postgresql.conf y recargar postgresql. Vuelva a probar, luego mire en los registros para ver qué está haciendo exactamente opengeospatial.

Si resulta que está detectando una vista, es posible que pueda solucionar el problema con ON SELECT regla añadida a una tabla vacía. La tabla funcionará como una vista, pero GeoServer no podrá decir que es una vista y podría aceptar escribir en ella.