[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