Em sexta-feira, 18 de novembro de 2011 15:06:44, Leonardo Cezar 
escreveu:
> 2011/11/18 Deusimar Ferreira<[email protected]>:
>> Boa tarde a todos,
>> Estamos criando uma função de gatilho para gravar histórico de alterações de
>> algumas tabelas no banco de dados, mais nós deparamos com um problema que
>> não estamos conseguindo solução.
>> Fizemos um SQL para pegar dinamicamente as colunas da tabela para que a
>> função seja o mais genérica possível a fim de utiliza-lá em qualquer tabela,
>> até ae tudo bem. O problema surgiu quando tentamos recuperar o valor OLD
>> usando a coluna dinâmica que foi encontrada pelo SQL Ex.: OLD || '.' ||
>> record.coluna, fizemos diversos teste e pesquisas mais ainda não obtivemos
>> sucesso.
>
> http://postgreslogia.wordpress.com/2008/02/08/uma-palavra-sobre-instrucoes-dinamicas-plpgsql-e-plperl/
>
> -Leo

Quando desenvolvi algo similar, quando criavamos a tabela de log 
utilizamos o like, colocando uma cópia exata de todos os os campos do 
alvo na tabela de log.

Algo assim:

CREATE TABLE usuarios (
nome primary key,
email varchar(100) not null);

CREATE TABLE usuarios_log (
id_log serial primary key,
data_hora timestamp default now(),
alteracao varchar(1) default 'I',
usuario_db varchar(200) not null default current_user(),
-- outros campos de log) like usuarios

Dá pra fazer isso programaticamente...
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a