[firebase-br] Incrementar Generator na Trigger After Insert

-=SchiavoR=- schiavor em gmail.com
Ter Dez 19 21:23:25 -03 2006


2. As chances de dois usuários inserirem o código 0 ao mesmo tempo, são 
enormes, se existirem apenas 2 usuários. Se forem mais de 2, sempre 
acontecerá. (Sim, as leis de Murphy foram gravadas em todas as bios de 
todos os computadores)

As chances de inserirem 2 codigos 0 ao mesmo tempo, antes do banco 
disparar a trigger After Insert de ao menos 1 dos dois registros?


Eduardo Bahiense escreveu:
> Olá
>
> Vou dar alguns palpites:
>
> 1. Concordo com quem disse para não se preocupar com uma eventual 
> seqüência descontinuada por se "queimar" um generator.
> 2. As chances de dois usuários inserirem o código 0 ao mesmo tempo, são 
> enormes, se existirem apenas 2 usuários. Se forem mais de 2, sempre 
> acontecerá. (Sim, as leis de Murphy foram gravadas em todas as bios de 
> todos os computadores)
> 3. Basear a lógica em deixar acontecer uma exceção, embora tecnicamente 
> viável, deve ser evitado sempre que possível (melhor não deixar 
> acontecer o erro).
> 4. Se vc já se conforma em fazer em duas etapas, então quem sabe uma 
> estratégia com 2 generators não funcionaria?
>
> CREATE TRIGGER CLIENTES_BI FOR CLIENTES
> ACTIVE BEFORE INSERT POSITION 0
> AS
> BEGIN
>      IF NEW.CODIGO IS NULL --JUST IN CASE
>         OR NEW.CODIGO = 0 THEN
>            NEW.CODIGO = GEN_ID(GEN_TEMPORARIO,1); -- evita violação
> END
>
> 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 = NEW.CODIGO -- isto foi atribuido antes, então...
> END
>
> Acho que assim fecha todas, mas não testei.
>
> Abs, Eduardo
>
>
> ______________________________________________
> 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