[firebase-br] RES: Pegar Código

Felix - SOL Informática felix em solsistemas.com
Sex Jul 27 22:16:19 -03 2012


Eu faço um "SELECT GEN_ID(Gen_Cliente_Codigo, 1) chave ..." e atribuo o
valor a uma variável; em seguida faço o insert já com esse valor - ou seja,
não uso uma trigger neste caso em específico. É nula a chance de retornar um
código errado.

Mas também gostei da solução do Daniel.

Francisco Felix
www.solsistemas.com

-----Mensagem original-----
De: lista-bounces em firebase.com.br [mailto:lista-bounces em firebase.com.br] Em
nome de Tecnobyte Informática
Enviada em: sexta-feira, 27 de julho de 2012 21:53
Para: FireBase
Assunto: Re: [firebase-br] Pegar Código

Boa noite Levy

Eu entendi a preocupação do Saulo e ele realmente tem razão em se preocupar
com isto. Embora possa ser pequena a probabilidade de inserir dois registros
na mesma tabela em uma fração de segundo, no dia em que isto acontecer
poderá gerar problema, que dependendo da lógica do sistema pode ser um
grande problema.

Veja uma hipótese do que pode acontecer:

USUÁRIO1: INSERT INTO Cliente ... (gerou código 500)
USUÁRIO2: INSERT INTO Cliente ... (gerou código 501)
USUÁRIO1: SELECT GEN_ID(Gen_Cliente_Codigo, 0) ... (pegou 501)
USUÁRIO2: SELECT GEN_ID(Gen_Cliente_Codigo, 0) ... (pegou 501)
USUÁRIO1: INSERT INTO ContaReceber... (grava conta a receber para o cliente
501, mas deveria ser do cliente 500)
USUÁRIO2: INSERT INTO ContaReceber... (grava conta a receber para o cliente
051, o que é correto para USUÁRIO2)

No final, foram gravadas duas contas a receber para o cliente 501, quando o
correto seria uma conta a receber para cada cliente.

Atenciosamente.

Daniel P. Guimarães
Tecnobyte Informática
www.tecnobyte.com.br

-----Mensagem Original-----
From: Levy Moreira
Sent: Friday, July 27, 2012 8:18 PM
To: FireBase
Subject: Re: [firebase-br] Pegar Código

Se logo após o post  você pegar o valor tipo.

TblClientes.Post;
Codigo := FunctionExecutaSQL('select COALESCE(gen_id(genClienteCodigo, 0),
1) from rdb$database');

Não resolve?
Estou usando assim, você já teve problemas com isso ou esta fazendo uma
hipótese?

Se alguém souber uma maneira melhor fico grato.

--
Levy Moreira
______________________________________________
FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br Para
saber como gerenciar/excluir seu cadastro na lista, use: 
http://www.firebase.com.br/fb/artigo.php?id=1107
Para consultar mensagens antigas: http://firebase.com.br/pesquisa 


______________________________________________
FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br Para
saber como gerenciar/excluir seu cadastro na lista, use:
http://www.firebase.com.br/fb/artigo.php?id=1107
Para consultar mensagens antigas: http://firebase.com.br/pesquisa





Mais detalhes sobre a lista de discussão lista