Re: [Portugal] Re: plugin QGis para registo de alterações ao PostGis

Fred Lehodey lehodey at gmail.com
Thu Apr 22 10:20:40 EDT 2010


Viva,
a minha sugestão é fazer isso logo no Postgres.... ;-)
é bastante simples, exemplo: (em bold o SQL a correr depois de alterar nomes
de tabelas e de campos)

1 - criar uma cópia da tabela = tabela de log :

*SELECT * INTO log_tabela FROM tabela*

2 - adicionar campos: data (será a data de alteração), utilizador (i.e. o
login que irá alterar os dados)
*
ALTER TABLE log_tabela ADD COLUMN data_alter timestamp without time zone;
ALTER TABLE log_tabela ADD COLUMN utilizador text;*

3 - Criar a função de trigger para registar as alterações na tabela.
Alterar os nomes de campos com base sua tabela... neste exemplo, a tabela
tem campos gid, nome e the_geom

*CREATE OR REPLACE FUNCTION f_tabela() RETURNS TRIGGER AS $$
BEGIN
    IF (TG_OP = 'UPDATE') THEN
        INSERT INTO log_tabela
        (
        gid, nome, the_geom, data_alter,utilizador
        )
        VALUES (
        OLD.gid, OLD.nome, now(),current_user
        );
    END IF;
RETURN NULL;
END;
$$
language "plpgsql" volatile*


4 - Declarar o trigger para quando acontecer um evento na tabela:

*CREATE TRIGGER trig_log_tabela
AFTER INSERT OR UPDATE OR DELETE ON tabela
FOR EACH ROW EXECUTE PROCEDURE f_tabela();*


5 - melhorias:
se for necessário registar os INSERTs ou DELETEs, é só alterar a função....
Muito flexível!





2010/4/22 Giovanni Manghi <giovanni.manghi at gmail.com>

> Olá,
>
> a minha sugestão é de por a questão directamente ao developer, através
> da mailing list qgis-developer ou qgis-user. Se o dev estiver disponível
> há sempre o "risco" que o bug ou a feature pedidos sejam
> resolvidos/implementados em pouco tempo.
>
> Se for um bug o conselho é sempre o de explicar passo a passo
> (possivelmente com um pequeno dataset) a forma de o reproduzir.
>
> Neste ultimo caso o sitio certo onde reportar o problema é o qgis bug
> tracker:
>
> https://trac.osgeo.org/qgis/report
>
>
> cumprimentos
>
> -- Giovanni --
>
>
> On Thu, 2010-04-22 at 04:39 -0800, cremat0rio wrote:
> > Muito obrigado Giovanni,
> >
> > Já instalei e funciona bem, à excepção de um ponto.
> > É que ele altera-me a tabela principal.
> > Será que não há forma de criar uma tabela _hist à parte que armazenaria o
> > histórico? Ou terei mesmo que alterar o código gerado pelo Postgis
> Manager?
> >
> > Obrigado.
> > David
> >
>
> _______________________________________________
> Portugal mailing list
> Portugal at lists.osgeo.org
> http://lists.osgeo.org/mailman/listinfo/portugal
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.osgeo.org/pipermail/portugal/attachments/20100422/10414dfa/attachment-0001.html


More information about the Portugal mailing list