On Thu, 14 Dec 2017 22:19:25 +0100, Massimiliano Moraca wrote:
Sti trigger mi stanno inTRIGGando :P
Con un trigger è possibile anche tenere traccia dell'evoluzione
temporale di un vettore? Ad esempio poligoni creati, modificati,
cancellati..?


Massimiliano,

certo che puoi; i triggers sono un meccanismo universale,
ci puoi fare qualsiasi cosa che ti viene in mente
(o quasi ...)

l'unico limite e' la tua capacita' creativa di saperti
"inventare" un buon modello dati; naturalmente serve
anche una base molto solida di conoscenza teorica su
SQL con tutte le sue estensioni Spatial, cosi' come e'
indispensabile quella certa "praticaccia spicciola" che
si acquisisce solo a forza di lavorare sul campo imparando
piu' che altro dai propri errori.

giusto per analizzare per sommi capi il tuo esempio
relativo all'evoluzione storica dei dati, e' molto
piu' semplice di quanto tu possa credere:

1. ti crei una tavola di appoggio in cui andrai a
   registrare tutte le successive modifiche delle
   tue geometrie. una scelta saggia sarebbe quella
   di introdurre un opportuno vincolo FK che associ
   direttamente ciascuna "riga-versione" con la
   corrispondente riga della tavola-madre.
   cosi' come sarebbe opportuno inserire un timestamp
   che tenga traccia della data-ora in cui e' avvenuta
   la modifica; datti un'occhiata a DateTime('now')

2. a questo punto vai ad installare tre triggers
   sulla tavola-madre, uno per la Insert, uno per
   la Update ed uno per la Delete.
   ovviamente ciascuno di questi non fara' altro
   che prendere la geometria e salvarla permanentemente
   sulla tavola-versioni associandola al timestamp
   corrente.

basta; non serve altro. e' piu' facile da implementare
che da spiegare.


concetti da tenere bene a mente:
================================
un Trigger e' semplicemente un gestore di eventi.
una volta che il Trigger e' correttamente installato
scattera' automaticamente tutte le volte che si
verifica l'evento in oggetto.
l'azione specifica di ciascun Trigger e' determinata
da un "pezzo" di SQL che sta a te scrivere nel modo
che ritieni piu' opportuno; hai tutta la liberta'
che vuoi di fare qualsiasi cosa che ti passi per la
zucca, basta solo che tu trovi il modo di tradurla
in una appropriata sequenza di comandi SQL.
ovviamente liberta' e responsabilita' sono sempre
due facce della medesima medaglia; se non funziona
e' sicuramente colpa tua, e ti dovrai quindi armare
di santissima pazienza per fare tutto il debugging
del caso (che e' poi la vera essenza di qualsiasi
sviluppo sw; un bravo sviluppatore non e' uno bravo
a scrivere codice, e' soprattutto uno bravo a fare
debugging)


Mi indicate una risorsa da cui studiare? Anche un libro se non c'è
nulla online...


non credo proprio che esista nulla di specifico
relativo ai triggers, al massimo puoi trovare qualche
manuale generico su SQL che avra' un capitoletto
sui meccanismi generali dei triggers.
dovresti sicuramente trovare qualche manuale piu' o
meno ponderoso in qualsiasi libreria universitaria.

per tutto il resto serve tenere sempre sotto mano
la doc tecnica del tuo DBMS preferito [1], ma soprattutto
servono tempo, pazienza e perseveranza, uniti ad un
pizzico di intuizione e di fantasia creativa.

[1] https://www.sqlite.org/lang.html

ciao Sandro


_______________________________________________
[email protected]
http://lists.gfoss.it/cgi-bin/mailman/listinfo/gfoss
Questa e' una lista di discussione pubblica aperta a tutti.
I messaggi di questa lista non hanno relazione diretta con le posizioni 
dell'Associazione GFOSS.it.
801 iscritti al 19/07/2017

Rispondere a