[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