[firebase-br] RES: Generator que Incrementa mesmo Após o Rollback
Jose Aparecido da Silva
joseasilva em bol.com.br
Sex Abr 30 16:22:22 -03 2010
Generator não depende de transação e creio que isso é o que se espera dele.
Se você precisa fazer o controle desses números para não deixar nenhum
espaço entre eles, creio que é preciso rever a lógica do teu sistema.
Creio que não há problema em perder um número ou outro, pelo menos sabemos
que não haverá número repetido.
[ ]'s
Jose Aparecido da Silva
Fasystem
-----Mensagem original-----
De: lista-bounces em firebase.com.br [mailto:lista-bounces em firebase.com.br] Em
nome de Rogério Monteiro
Enviada em: sexta-feira, 30 de abril de 2010 15:20
Para: lista em firebase.com.br
Assunto: Generator que Incrementa mesmo Após o Rollback
Olá Colegas.
Uso Delphi 7 + ZeosLib + FB 2.1.
tenho uma tabela chamada ESTOQUEPAPELSOBRAS que é filha da tabela
ESTOQUEPAPEL. Todas as tabelas, eu disse TODAS, eu tenho primeiramente um
campo chamado ID que é a minha chave primária e que são auto-incrementadas
pela trigger no BEFORE POST do FB. Portanto:
Em
ESTOQUEPAPEL - ID -->> PK
ESTOQUEPAPELSOBRAS - ID -->> PK
ESTOQUEPAPELSOBRAS -->>
FK que recebe o ID de ESTOQUEPAPEL.
Na tabela ESTOQUEPAPELSOBRAS tenho tb um campo chamado ALTURA e outro
LARGURA, e uma Unique Constraint com os campos IDESTOQUEPAPEL, ALTURA,
LARGURA.
Utilizo TZQuery + TDataSetProvider + TClientDataSet.
Pois bem, logo, se eu tento cadastrar na ESTOQUEPAPELSOBRAS uma ALTURA e
LARGURA repetida, eu somente consigo pegar a exceção no evento
OnReconcileError do CDS, e não no AfterPost como no restante das tabelas, e
dou um Rollback. Até aí td bem.
PROBLEMA:
Verifico o Generator que incrementa o ID de ESTOQUEPAPELSOBRAS e, ao invés
de ele não incrementar nada pq houve exceção, se por exemplo ele estiver no
número 4, ele incrementa 3 e vai para 7. Se está com 5 vai para 8 e assim
por diante.
Como fazer esse 'rollback' neste caso?
Desde já agradeço a todos.
Rogério.
Mais detalhes sobre a lista de discussão lista