[firebase-br] Incrementar Generator na Trigger After Insert

Claudio - CatSj claudio.sj em sercon.com.br
Qua Dez 20 10:01:19 -03 2006


Vou dar minha opiniao sobre o assunto..

Pra nao ter problemas, o melhor seria voce primeiro em sua aplicacao pegar o
numero no generator e logo em seguida executar a frase SQL de insersao
Apos o usuario confirmar os dados que serao inclusos, voce pega o numero
pelo generator

O usuario nao podera cancelar a transacao porque ja confrmou e com isso
tirou a possibilidade dele abortar ou cancelar no meio.

----- Original Message ----- 
From: "P em ULO" <paulo em sjudas.com.br>
To: <lista em firebase.com.br>
Sent: Wednesday, December 20, 2006 9:10 AM
Subject: Re: [firebase-br] Incrementar Generator na Trigger After Insert


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
>


______________________________________________
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