[firebase-br] Trigger Duplicando

Gladiston Santana gladiston em vidy.com.br
Seg Dez 15 10:35:37 -03 2014


O sequenciador apenas armazena um numero usado que mais tarde pode receber
um incremento, geralmente +1.
Ele não tem condição de arbitrar um valor mesmo que esteja em transação,
somente armazena o ultimo usado e o próximo terá de indicar um incremento
para poder utilizá-lo ou apenas ler o valor ataual, daí seu problema não é
no sequenciador, mas processos que estão usando ele.

Os valores de incremento para funcionar adequadamente, tem que receber +1 e
capturar o valor numa variavel e o restante do bloco tem que usar essa
variavel, e nunca mais ler o valor atual do generator, pois se o fizer, o
valor já pode ter mudado. Para exemplificar, o procedimento XPTO é
disparado simultaneamente por 2 usuarios na rede, ambos dão incremento +1,
mas o programador preciosista resolveu ler o valor do generator atual e
usá-lo 'ao vivo' no insert. Daí, nesse caso, poderá haver uma duplicação
porque ambos pegaram o valor mais recente.

Triggers tem algo chamador nearest triggers que a grosso modo tem um efeito
espaguete ao chamar outras triggers, as vezes é necessário setar uma
variavel de contexto para evitar situações quase indetectáveis por um
debugger ou teste de mesa. Como não conheço seu sistema só posso
conjecturar que você esteja passando por um problema similar.

inte+


Em 10 de dezembro de 2014 18:02, <firebase em dominioinf.com.br> escreveu:
>
> Boa tarde Gladiston,
> Obrigado pela resposta,
>
> Fiz as verificações que vc indicou, mas esta tudo certinho.
>
> No meu caso o sistema verifica por ex. se o numero de pedido 100 existe ja
> na tabela NUMPEDIDOS.
> Se nao existe, inclui um numero, se nao existe, marca como S de usado no
> campo USADO.
>
> Entao ele esta sempre acrescentando um novo numero.
> Mas a sequencial do id com o max estao batendo.
>
> Do nada ele duplica,
>
> tipo  101
>       101
>       101
>       102
>       103
>       104
>       105
>       105  ... e ai vai, é aleatorio.
>
> A vezes vc testa um dia inteiro e nao duplica. Mas no final do mes o
> cliente me liga e tem 20 a 30 pedidos com numero duplicado.
>
> Uma pergunta, a ordem do position na trigger, poderia estar causando isso?
>
> Grato,
>
>



Mais detalhes sobre a lista de discussão lista