[firebase-br] Generator Duplicando?

Gladiston Santana gladiston em vidy.com.br
Seg Abr 25 14:26:16 -03 2016


O problema é provavelmente sistêmico, algum erro de lógica.
Se o numero sequencial estiver mais alto do que deveria é porque você
passou varias vezes pelo mesmo lugar (tendo confirmado ou não feito a tal
inclusão), isso é algo que deve ser levado em conta ao trabalhar com
triggers e seu efeito espaguete.
Se seu sequenciador é um ID longint/bigint a perder de vista, corrija o
problema e continue a usar os sequenciadores.
Mas se seu sequenciador for algo a ser alterado anual/mensal/semanal,
talvez seja interessante reavaliar se um max(campo) não seja uma melhor
solução.
Sequenciadores são mais rapidos e eficientes e se comportam como globulos
brancos nas transações, mas não são estritamente sequenciais como um
max(campo), eu os uso, especialmente em tabelas pequenas onde novas
inclusões são bem raras como uma tabela de estados, paises, ceps, ramos de
atividade, ...
insert into tabela(id,campo2,...) values(select coalesce(max(id),0)+1 from
tabela,campo2,....)

É uma pena que o FB não tenha um campo do tipo sequencial direto, mas quer
saber, o MSSQL tinha e vez ou outra dava problemas, acho que sequencial e
blob nas tabelas até hoje sofrem pela má reputação que tinham no passado e
muita gente os suprime até hoje.

inte+

Em 25 de abril de 2016 14:04, José Mauricio barbisan Zottis <
zottissistemas em gmail.com> escreveu:

> 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 código anual a PK(
> COD_FAR_MTR) é 101 em todos os casos.
>



Mais detalhes sobre a lista de discussão lista