Generator que Incrementa mesmo Após o Rollback

Rogério Monteiro monteirorama em gmail.com
Sex Abr 30 15:20:07 -03 2010


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