[Gfoss] storicizzazione delle modifiche in postgres/postgis

buongiorno!

vorrei utilizzare Qgis per aggiornare dei layer postgis
e memorizzare lo storico degli aggiornamenti fatti dai vari utenti
in modo da tenere traccia di chi ha modificato la singola riga della tabella

è possibile farlo in maniera trasparente direttamente da postgres?
mi immagino che, prima di salvare la nuova modifca, postgres potrebbe fare una copia della riga originale in una tabella “storica” e memorizzare data e utente dell’aggiornamento

chiedo se postgres ha già delle funzioni di questo tipo, che basta attivare nella tabella da monitorare

grazie!
emanuele masiero
padova

2011/6/25 emanuele masiero <emanuele.masiero@gmail.com>

buongiorno!

vorrei utilizzare Qgis per aggiornare dei layer postgis
e memorizzare lo storico degli aggiornamenti fatti dai vari utenti
in modo da tenere traccia di chi ha modificato la singola riga della tabella

è possibile farlo in maniera trasparente direttamente da postgres?

Ciao, sicuramente non è molto difficile creare un trigger di audit:

http://stackoverflow.com/questions/1295795/how-can-i-use-a-postgres-triggers-to-store-changes
http://www.postgresql.org/docs/8.4/static/plpgsql-trigger.html

Io l’ho testato con altro DBMS, in sostanza devi creare un trigger che si attiva su insert delete e update e memorizza in una tabella di “log” il nome utente, l’applicazione client, data e ora, campo modificato, valore vecchio e valore nuovo.

Il trigger va creato per ogni tabella da monitorare (si può preaparare uno script) mentre la tabella di log può essere unica. Ricordati di fare entrare ogni utente con un nome univoco, es. non tutto con “postgres” altrimenti forse puoi loggare l’ip del computer.

Interessa metterlo su anche a me in studio, ma non ho ancora centralizzato tutta l’informazione geografica in postgis.

Amedeo Fadini

grazie amedeo!!
quindi la parola “magica” è trigger!! :slight_smile:
ti farò sapere cosa conbino…
Emanuele Masiero

mai usato ma per postgresql c'è il modulo time travel
http://www.postgresql.org/docs/8.3/static/contrib-spi.html#AEN104295
Detta in maniera ingenua:
compili il modulo e estendi le funzioni di pgsql (proprio come con
postgis)
quando crei una tabella crei due campi in piu'
... e poi usi le magie di time travel

Fammi sapere :slight_smile:

Il 26/06/2011 22:56, Maurizio Napolitano ha scritto:

mai usato ma per postgresql c'è il modulo time travel
http://www.postgresql.org/docs/8.3/static/contrib-spi.html#AEN104295
Detta in maniera ingenua:
compili il modulo e estendi le funzioni di pgsql (proprio come con
postgis)
quando crei una tabella crei due campi in piu'
... e poi usi le magie di time travel

Forse dico una cosa ovvia, ma in QGIS ci sono due plugins per questo: PostGIS Manager
e PgVersion. Ovviamente fanno due cose diverse: il primo storicizza, il secondo
aggiunge le versioni.
Fateci sapere i risultati degli esperimenti, per piacere, e se lo ritenete utile
scrivete una guida.
Saluti.
--
Paolo Cavallini: http://www.faunalia.it/pc