On Tue, 6 Oct 2015 14:57:45 +0200, pierluigi de rosa wrote:
salve a tutti,
sto cercando di riprodurre quanto facevo già con postgis in
spatialite.
Una cosa molto semplice ma stranamente non riesco nè con
spatialite-gui ne da sql puro.
Voglio creare una spatial view di buffer di 1km attorno a punti che
sono già nel DB.
Uso:
CREATE VIEW "pippo11" AS
SELECT "ROWID" AS "ROWID", "name" AS "name",
ST_Buffer("Geometry",1000) AS "Geometry"
FROM "bus_stop"
Poi registro la view:
INSERT INTO views_geometry_columns (view_name, view_geometry,
view_rowid, f_table_name, f_geometry_column)
VALUES ('pippo11', 'geometry', 'rowid', 'bus_stop', 'geometry')
Ma mi dice che la tabella è del tipo read-only
Dove sbaglio?
ciao Pierluigi,
non sbagli nulla; e' semplicemente che per definizione le Views
di SQLite sono sempre di tipo read-only.
se vuoi puoi anche trasformare una qualsiasi View di SQLite in
un oggetto dotato di piene capacita' read-write, ma in questo
caso pero' devi anche provvedere ad installare dei Triggers
che intercettino gli eventi INSERT, UPDATE e DELETE rimappandoli
nel modo piu' opportuno.
una spiegazione piu' completa e dettagliata la trovia qua:
https://www.gaia-gis.it/fossil/libspatialite/wiki?name=writable-view
se vuoi renderti la vita molto piu' semplice puoi usare
SpatiaLite-GUI che supporta un wizard "Query/View composer"
che e' in grado di generarti automaticamente tutti i Triggers
che servono per ottenere una Spatial View "updatable".
infine, nota bene:
INSERT INTO views_geometry_columns (view_name, view_geometry,
view_rowid, f_table_name, f_geometry_column)
VALUES ('pippo11', 'geometry', 'rowid', 'bus_stop', 'geometry')
questa notazione e' incompleta, ti stai mangiando una colonna;
la forma completa e' invece:
INSERT INTO views_geometry_columns (view_name, view_geometry,
view_rowid, f_table_name, f_geometry_column, read_only)
VALUES ('pippo11', 'geometry', 'rowid', 'bus_stop', 'geometry', 1 | 0);
l'ultimo valore "read_only" e' proprio quello che QGIS usa
per stabilire se la tua View e' di tipo read-only oppure
read-write.
ovviamente se ti limiti a settare il valore "read_only=0" senza
installare correttamente tutti i Triggers di supporto QGIS
ti dara' un sacco di errori al primo tentativo che farai di
andare a fare qualche operazione di scrittura su quella View.
ciao Sandro