[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