[firebase-br] inserir dados em tabela automaticamente

Jeferson Oliveira jefersonfoliveira em gmail.com
Qui Out 18 18:06:18 -03 2007


Ezequiel Pianegonda wrote:
> para cada tabela, são criadas 3 triggers, uma para cada operação
> (insert/update/delete);

Isso.

> uma das triggers insere um registro na tabela de operações e n (numero de
> campos da tabela que sofreu o insert||update||delete) na tabela de
> registros?

Não uma, mas sim cada uma, das triggers: aciona, uma única vez, o 
procedimento responsável por inserir um registro na tabela de operações; 
e aciona uma vez, para cada campo que precisa ser logado, o procedimento 
responsável pela inclusão de um registro na tabela de campos.

O critério de decisão para gravação do campo é, basicamente, se houve 
alteração, mas ele varia de acordo com o tipo de trigger, exemplos:

After insert:
   if (new.CAMPO is not null) then
     execute procedure GRAVAR_LOG_CAMPO ...

After update:
   if (((old.CAMPO is null) and (new.CAMPO is not null and 
substring(new.CAMPO from 1 for n) <> '')) or ((old.CAMPO is not null) 
and (new.CAMPO is null)) or (old.CAMPO not like new.CAMPO)) then
     execute procedure GRAVAR_LOG_CAMPO ...

After delete:
   if (old.CAMPO is not null) then
     execute procedure GRAVAR_LOG_CAMPO ...


Vejo que muitos ficaram interessados no assunto, mas percebam que meu 
mérito está mais na parte da automação do processo de geração de 
triggers, e de algumas abstrações no processo de gravação de registro, 
do que na modelagem propriamente, pois essa foi inspirada, não copiada, 
mas inspirada no IBLogManager. Então sugiro, como já sugerido neste 
mesmo tópico pelo Kleber, que testem a versão de avaliação do utilitário 
IBLogManager.

Além de servir como fonte de inspiração, em muitos casos será mais 
barato adquirir uma licença dele do que implementar a gravação dos logs, 
e uma interface para consulta e análise tão boa quanto a que ele oferece.


Abraço!
Jeferson Oliveira

Enviado pelo Mozilla Thunderbird
http://br.mozdev.org/thunderbird





Mais detalhes sobre a lista de discussão lista