Fórum duvida com generator!! #52529

28/08/2005

0

Ola amigos, minha duvida é a seguinte:

pq quando crio o generator e chamo a sql:

select gen_id(gen_clientes_id,1) from rdb$database

ele faz tudo bunitinho, mas se insiro 1 registro, cancelo ele, o generator continua gerando e n continua de onde parei?

ex:

query.insert

gerou 1

query.cancel

cancelou, quando insiro de novo ele vai 2 e nao volta pro 1 de onde nem inseri!

como contornar isso?

um abraço

[color=green:b3ac60bda8]Movido de Delphi para Interbase/Firebird[/color:b3ac60bda8]


Njuniorba

Njuniorba

Responder

Posts

29/08/2005

Catunda

Well, the book is on the table.......

Colega, o comando abaixo, utilizado por vc está correto:

select gen_id(gen_clientes_id,1) from rdb$database

O problema é o momento em que vc está disparando o comando.
Pelo que percebi vc esta utilizando logo apos o insert, e uma vez feito o valor do generator não volta atras.
Eu resolvi esse problema fazendo a incrementação do generator no evento before post do dataset, assim somente executo o comando de incrementação do generator se confirmar a inclusão do registro.
Contudo, essa minha maneira tem o incoveniente de não mostrar logo o código, no caso, do novo cliente, mas há formas de tb contornar esse problema, e isso depende do modo de lançamento do seu formulario, isso é, se vc está lançando os dados em um dbgrid ou em dbedit... etc...

Valeu?????????


Responder

Gostei + 0

29/08/2005

Motta

Generator (Sequence no Oracle) são objetos que garantem unicidade , mas não a integridade , tem algumas aplicações que não podem ter ´banguelas´ (apolices , NF´s etc) , para isto a solução é colocar uma tabela que guarde a última sequencia utilizada e ter sua atualização numa única transação, já vi varias discussões sobre este assunto aqui uma pequisa pode trazer uma solução até melhor.


Responder

Gostei + 0

29/08/2005

Gandalf.nho

Um generator fica fora do contexto das transações, ou seja, não é afetado por rollback, mas a menos que realmente não possa haver buracos na numeração como notas fiscais e similares, vc pode ignorar isso.


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar