[firebase-br] inserir dados em tabela automaticamente

Paulo Casagrande paulo em sjudas.com.br
Qui Out 18 18:05:31 -03 2007


Jeferson

Se a empresa onde você trabalhar permite a divulgação
de código proprietário, poste para nós uma pequena
amostra dessas triggers :)

Obrigado



> 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





Mais detalhes sobre a lista de discussão lista