[firebase-br] Generator Duplicando?

José Mauricio barbisan Zottis zottissistemas em gmail.com
Seg Abr 25 14:04:42 -03 2016


Boa tarde, obrigado verifiquei até a opção do banco estar corrompido como
cogitou o colega Paulo Quicoli,
mas não achei erro nenhum, fiz um backup/restore  para ver se acontece de
novo.
ta muito estranho.
o interessante é que aconteceu mais de uma vez e são registros
imediatamente seguintes, ou seja a PK(COD_FAR_MTR) do registro é por
exemplo, 100 e o código anual é (25) a que repetiu o codigo anual a PK(
COD_FAR_MTR) é 101 em todos os casos.


Em 25 de abril de 2016 12:13, Gladiston Santana <gladiston em vidy.com.br>
escreveu:

> O sequenciador pode sair fora da ordem geralmente em manutenção manual, as
> vezes por um programa de gerenciamento de banco como o ibexpert.
> Apenas ajuste a sequencia correta, eu faço através de script, segue um
> exemplo:
>
> /* Cria um sequenciador para uso nas procedures e partes do programa
> Pode ser usado da seguinte forma:
> P_NEXT_ID=GEN_ID(SEQ_ID_CLIENTE, 1);
> */
>
> SET TERM ^ ;
> EXECUTE BLOCK AS
> declare variable nMAX BIGINT = 0;
> declare variable SEQ_NAME varchar(31)='SEQ_ID_CLIENTE';
> BEGIN
>   if (not exists(SELECT * FROM RDB$GENERATORS WHERE RDB$GENERATOR_NAME =
> :SEQ_NAME))
>   then execute statement 'CREATE SEQUENCE '||:SEQ_NAME||';';
>   -- captura a numeracao mais alta e a transfere para o sequenciador
>   if (exists(SELECT * FROM RDB$RELATIONS WHERE RDB$RELATION_NAME =
> 'CLIENTES')) then
>   begin
>     select coalesce(max(ID_CLIENTE),0) FROM CLIENTES  into :nMAX;
>     if (:nMax is null) then nMAX=0;
>     execute statement 'ALTER SEQUENCE '||:SEQ_NAME||' RESTART WITH
> '||cast(:nMax as varchar(12))||';';
>   end
> END^
> SET TERM ; ^
>
> E para ser sincero, só uso esses tipos de script para criar o banco e ou
> após um transferencia de outro banco, nunca houve ainda usa-lo para
> corrigir o problema que descreveu.
> ______________________________________________
> 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
>



Mais detalhes sobre a lista de discussão lista