2011/4/1 Marcel Farias Costa <[email protected]>

> Galera,
>
> Estou tentando fazer uma trigger de LOG. Quando um usuario da um INSERT,
> UPDATE ou DELETE, a trigger verifica se a tabela Nome_tabela+_log existe no
> banco. Se nao existe, ele ira criar essa tabela.
> se existir, ele vai dar um insert com todas informações OLD.* na tabela de
> LOG. Com o comando abaixo.
> Esse comando, vai varrer toda tabela e em cada campo da tabela, vai pegar o
> seu OLD e jogar na tabela LOG:
>
> *     execute 'insert into ' || nome_tabela_log ||'('|| r.coluna ||')
> values (OLD.' || r.coluna || ');';*
> Exemplo:
> *     insert into produtos_log(cod_prod) values (OLD.cod_prod);*
>
>
Utilize o USING:

*execute 'insert into ' || nome_tabela_log ||'('|| r.coluna ||') values
($1.' || r.coluna || ');' USING old;*

Apenas uma dica, em questões de otimização de espaço, você poderia utilizar
apenas uma tabela de log, gravando apenas os campos que realmente foram
alterados. Dê uma olhada neste site[1].

Atenciosamente,
Juliano Benvenuto Piovezan

[1]
http://davor.no-ip.com:1984/blog/2010/06/29/postgresql-table-audit-in-plpgsql/
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a