[firebase-br] Por favor uma ajuda em Reset Automático de Generator

Frederico Godoi frederico.godoi em gmail.com
Qui Jan 24 23:45:27 -03 2019


Antonio, generators nunca deixam de incrementar se você fizer um select
next value ou gen_id, 1 como é o seu caso. Mesmo dentro da transação.

Tem como testar o valor atual da Generator antes, na aplicação, mas
voltaria o problema da concorrência.

Alguma razão especial pra zerar esse número e deixar aumentar apenas
infinito ?

Em qui, 24 de jan de 2019 às 18:30, Antonio Carlos <
a.lima.silva em terra.com.br> escreveu:

> Pessoal tenho a seguinte situação, umas 100 maquinas que geram pedidos
> durante o horário comercial em um banco Firebird 2.5 Superclassic rodando
> em Linux.
>
> Esses pedidos recebem um incremento numérico que faz parte da PK da tabela
> de um Generator.
>
> Esse incremento numérico tem que ficar limitado a 9.999.999 e quando
> chegar a esse valor o Generator ser reiniciado.
>
> Como o Generator não tem um evento After ou Before não tenho como
> automatizar ali.
>
> A aplicação desktop recebe o numero ao fazer a gravação do insert nessa
> tabela ou seja isso ocorre na aplicação e não diretamente no banco através
> de um 'SELECT GEN_ID(GEN_OPE_EC,1) AS VALOR FROM RDB$DATABASE'
>
> Verifiquei que mesmo realizando explicitamente um start transaction com um
> commit ou rollback o generatror é incrementado.
>
> Dai que pensei em algo que dá certo em laboratório mas não tenho como
> testar havendo muitas requisições concorrentes.
>
> Criei uma Store Procedure que é chamada dentro de um contexto de transação
> explicita, e ao ser chamada o select no generator e o retorno é retornado a
> aplicação.
>
> Na mesma Stored Procedure o valor retornado é testado e se for o valor
> máximo, através de uma transação autônoma o generator é reiniciado.
>
> Isso em ambiente de teste funciona, mas por absoluta inexperiência não sei
> se em ambiente real vai funcionar.
>
> Esse sistema antes realizada o incremento atraves de uma consulta ao campo
> de uma tabela e através de triggers nesse campo gerava esse controle,
> entretanto AS vezes ocorria violação da KEY e ao mudar para Generator
> deixou de ocorrer.
>
> O que os colegas poderiam me orientar por favor.
>
> Obrigado
>
> Antonio Carlos.
>
>
>
>
>
>
>
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para saber como gerenciar/excluir seu cadastro na lista, use:
> http://www.firebase.com.br/fb/artigo.php?id=1107
> Para consultar mensagens antigas:
> http://www.firebase.com.br/pesquisa_lista.html
>
-- 
Frederico Godoi



Mais detalhes sobre a lista de discussão lista