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]

Responder a