[firebase-br] inserir dados em tabela automaticamente

Jeferson Oliveira jefersonfoliveira em gmail.com
Qui Out 18 17:28:12 -03 2007


Paulo Casagrande wrote:
> 1) A principio eu pensei que você gravava
> cada campo com sendo um registro da tabela de log!
> Tipo:
> ( USUARIO, DATA_HORA, TABELA, CAMPO, OPERACAO, ANTERIOR, ALTERADO )

Não. Para cada operação da tabela haverá um registro de operação (ID, 
USUARIO, TABELA, DATA_HORA, OPERACAO)

E para cada campo haverá um registro: (OPERACAO [FK para ID da tabela de 
operacao], CAMPO, ANTERIOR, ALTERADO, ANTERIOR_BLOB, ALTERADO_BLOB)


> 2) Em procedimentos que são automatizados,
> você registra o nome do usuário ou registra que foi o
> sistema que gerou a alteração ?

Registro o usuário logado no sistema, o que me indica automaticamente 
que foi o sistema, caso contrário o usuário do banco. Mas essa parte de 
registrar o usuário precisa ser melhorada, pois não utilizo roles, com 
isso as operações feitas pelo banco ficam registradas, genericamente, 
como SYSDBA. Preciso melhorar isso, provavelmente utilizando roles, mas 
nem tenho idéia de quando tirarei um tempo para resolver isso.
Se eu conseguir migrar para o Firebird 2 ou superior algum dia, pretendo 
  utilizar contextos transacionais para identificar o usuário do 
sistema, ao invés de utilizar UDFs, como faço atualmente.


> Ex: Um procedimento de limpeza de registros antigos.

Ah! Você acabou de tocar em um ponto importantíssimo que não comentei 
com o Forrest. Há situações em que não é desejado que seja registrado o 
log, como por exemplo a limpeza de registros, ou alguma operação que 
remove temporariamente alguns registros, etc.. Para esse controle há uam 
tabela de configurações que indica (S ou N) se a gravação de log está 
ativada ou não. E em toda trigger (vale lembrar que cada tabela tem 3 
triggers de log After{Insert, Update, Delete]) é verificado se a 
gravação está ativada, e caso esteja desativada sairá do procedimento.


Abraço!
Jeferson Oliveira


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





Mais detalhes sobre a lista de discussão lista