[firebase-br] Incrementar Generator na Trigger After Insert

P@ULO paulo em sjudas.com.br
Qua Dez 20 09:10:45 -03 2006


Rodrigo Schiavo

É muito simples trabalhe com dois generator um no before
e outro no after.

1) crie uma procedure e passe o codigo do generator1 como parametro dela
2) dispare a procedure no after insert

Na procedure faça algo semelhante a isso procedure :

UPDATE TABELA SET CODIGO = GEN_ID( GERADOR2, 1 ) WHERE CODIGO = :PARAMETRO;

Espero que ajude


> Obrigado aos que responderam,
> 
> Qdo eu mandei a mensagem, esqueci de mencionar que eu já sei utilizar, 
> inclusive já utilizo em alguns sistemas o incremento do gerador na 
> trigger Before Insert, porém quando utilizado o incremento neste 
> contexto se houver alguma exceção no momento da inclusão, o código que 
> foi inserido será perdido devido ao rollback.
> Estou querendo discutir os problemas, vantagens e desvantagens de fazer 
> este incremento no evento After Insert, portanto no exemplo que enviei 
> todos os novos registros são inseridos com código 0, e após a efetiva 
> gravação no banco o código é atualizado com o valor correto, e o gerador 
> incrementado.
> 
> [ ]'s
> Rodrigo Schiavo
> 
> Rodrigo A. de Freitas escreveu:
>> Rodrigo,
>>
>> Uma melhor implementação para isso seria no evento Before Insert:
>>
>> CREATE TRIGGER CLIENTES_BI FOR CLIENTES
>> ACTIVE BEFORE INSERT POSITION 0
>> AS
>> BEGIN
>>     IF NEW.CODIGO = 0 THEN
>>         NEW.CODIGO = GEN_ID(GEN_CLIENTES_ID,1);
>> END
>>
>> []'s
>>
>> Rodrigo A. de Freitas
>> Análise & Desenvolvimento
>>
>> Soluções & Informática
>> www.solucoeseinformatica.com.br
>>
>>
>>   
>>> Galera, blz?
>>>
>>> Estou pensando em fazer essa Trigger no evento After Insert, o custo
>>> dela seria muito grande para o banco?
>>>
>>> CREATE TRIGGER CLIENTES_AI FOR CLIENTES
>>> ACTIVE AFTER INSERT POSITION 0
>>> AS
>>> BEGIN
>>>   UPDATE CLIENTES SET CODIGO = GEN_ID(GEN_CLIENTES_ID,1) WHERE CODIGO = 0;
>>> END
>>>
>>> Att.
>>> Rodrigo Schiavo
>>>
>>>
>>> ______________________________________________
>>> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
>>> Para editar sua configuração na lista, use o endereço
>>> http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
>>> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>>>
>>>
>>>     
>>
>>
>> ______________________________________________
>> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
>> Para editar sua configuração na lista, use o endereço http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
>> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>>
>>   
> 
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para editar sua configuração na lista, use o endereço http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
> 





Mais detalhes sobre a lista de discussão lista