[Gfoss] Automatizzare l'intersezione con un TRIGGER

Massimiliano Moraca info a massimilianomoraca.it
Dom 29 Dic 2019 11:52:40 CET


Si avevi ragione Sandro, mancava l'INSERT INTO.
Mi sono fatto trarre in inganno dal CREATE TRIGGER che puntava su
intersection_output, credevo che bastasse quello.
Ricapitolando quindi serve l'INSERT INTO ed il CREATE TRIGGER deve puntare
al vettore che scatena l'evento, buffer nel mio caso.
Grazie mille e buona domenica

*ing.Massimiliano Moraca*
*Analisi, progettazione e sviluppo di soluzioni GIS e WebGIS*
*P.IVA*: 08700081212
*CELL*: 333 59 49 583 (*lun - ven 9.00 - 18.00*)
*WEB*: www.massimilianomoraca.it
* Attività svolta ai sensi della Legge 4 del 14 gennaio 2013, art.1*


Il giorno sab 28 dic 2019 alle ore 18:44 <a.furieri a lqt.it> ha scritto:

> On Sat, 28 Dec 2019 18:19:02 +0100, Massimiliano Moraca wrote:
> > sostituendo con buffer ottengo questo
> > messaggio di errore nel momento in cui voglio salvare il poligono
> > creato:
> >
> >> Could not commit changes to layer buffer
> >> Errors: ERROR: 1 feature(s) not added.
> >>
> >> Provider errors:
> >> PostGIS error while adding features: ERRORE: la query non ha una
> >> destinazione per i dati restituiti
> >> HINT: Se vuoi scartare i risultati di una SELECT, utilizza PERFORM.
> >> CONTEXT: funzione PL/pgSQL intersection_function() riga 3 a
> >> istruzione SQL
> >
>
> Massimiliano,
>
> sempre premettendo che io conosco bene i Triggers di SQLite e molto
> poco quelli di PostgreSQL (e paiono sostanzialmente diversi).
>
> ragionando a fil di logica l'errore dovrebbe nascere dal fatto che
> tu nel tuo trigger-body in effetti ti limiti a fare una SELECT, ma
> non specifichi mai da nessuna parte che quei valori ottenuti dalla
> SELECT poi li vuoi inserire nella tavola di output.
> verosimilmente quello che ti serve e' definire uno statement SQL
> piu' o meno di questo tenore:
>
> INSERT INTO intersection_output (idb, idp, geom)
> SELECT a.idb, b.idp, ST_Intersection(a.geom, b.geom)
> FROM ..... etc etc ...
>
> ===========================================
> hint:
> un trigger non e' altro che un normalissimo statement SQL
> (piu' o meno complesso) che scatta automaticamente tutte le
> volte che si realizza un determinato evento.
> di per se non ha nulla di "magico", tutte le azioni che
> intendi fare te le devi definire tu una per una.
>
> ciao Sandro
>


Maggiori informazioni sulla lista Gfoss