Olá Ricardo. Com certeza daria problema num ambiente com + de 1 usuário simultâneo.
Cenário: Usuário 1: - Generator Gen_PedVenda é 100 - Select Gen_Id(Gen_PedVenda, 1) as Ultimo From Rdb$Database; - Generator Gen_PedVenda é 101 Usuário 2: - Select Gen_Id(Gen_PedVenda, 1) as Ultimo From Rdb$Database; - Generator Gen_PedVenda é 102 - Post - OK Usuário 1: - Post - Erro - Set generator Gen_PedVenda=100; - Tá feito a m....... Alisson, o que esse generator alimenta? A chave primária ou o número do pedido? Se for a chave primária, não tem stress se o nr pular. Se for o nr do pedido, a melhor forma que vejo é via trigger no banco. Outra idéia: procure por um artigo do Bruno Lichot que fala de números sequenciais sem furos (não lembro agora o nome exato do artigo) [] Andrei 2009/10/14 Ricardo César Cardoso <ricardo_engs...@yahoo.com.br> > Pensando aqui com os meus botões, sem avaliar se é viável ou não e nem as > consequências, você poderia guardar o valor atual do generator antes do post > e em caso de erro, pode setar o valor do generator para o valor antes do > post. > Acho que o único problema reside em ambientes multi-camadas... mas não > tenho certeza. > Abraço,Ricardo > > 1) Evite escrever suas mensagens usando somente LETRAS MAIÚSCULAS. > > 2) Revise o texto de sua mensagem. Uma mensagem bem escrita é melhor > compreendida. > > 3) Vamos ajudar o Grupo e o Yahoo! Apague o conteúdo irrelevante! > > --- Em qua, 14/10/09, Andrei Luís <compuvale.softw...@gmail.com> escreveu: > > De: Andrei Luís <compuvale.softw...@gmail.com> > Assunto: Re: [delphi-br] Erro em Generator do Firebird > Para: delphi-br@yahoogrupos.com.br > Data: Quarta-feira, 14 de Outubro de 2009, 15:59 > > > > > > > > > > > > > > > > > > > > Está correto, o generator corre direto no banco, fora da > transação. Das duas > > uma, ou você roda essa consulta uma linha antes do post (mesmo assim se der > > erro no post, o generator já vai ter rodado) ou crie uma trigger direto no > > banco. > > > > [] > > Andrei > > > > 2009/10/14 Alisson Yahoo <alss...@yahoo. com.br> > > > > > Faço uma consulta que busca e incrementa o generator no BD: > > > > > > Select Gen_Id(Gen_PedVenda , 1) as Ultimo From Rdb$Database; > > > > > > Esse código está dentro uma transação juntamente com uma rotina de > > > inserção > > > em BD. Se der erro na inserção a mesma é cancelada, mas o incremento do > > > generator não. Isso é normal? O que pode estar acontecendo? > > [As partes desta mensagem que não continham texto foram removidas]