[Gfoss] Automatizzare l'intersezione con un TRIGGER

a.furieri a lqt.it a.furieri a lqt.it
Sab 28 Dic 2019 18:44:34 CET


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