Array
(
)

duplicando registro

Julio Medeiros
   - 14 jan 2014

Gerei um numero sequencial em uma tela de cadastro em ASPX.NET.
Sempre que entra um novo registro verifico qual é o ultimo e somo mais um e cadastro o próximo, Esta funcionando, porem quando duas pessoas esta fazendo o cadastro ao mesmo tempo ele duplica. A verificação faz quando o usuário clica no botão salvar então fica assim
Verifica-soma-insere
Creio eu que quando um usuário já na etapa da inserção , o outro esta passando pela verificação e por isso a duplicação.
Alguém sabe como poderia resolver isso?

Chiodini
   - 14 jan 2014

Boa tarde].
Esse numero sequencial serve para identificar o registro?
Voceê pode estar usando uma sequence do banco de dados, ela mesmo trata isso.

att,
Chiodini

0
|
0

Chiodini
   - 14 jan 2014

de qualquer forma,
da uma olhadinha neste post aqui.
sobre Lock, é bem interessante.
pode te ajudar

#Código

hudsonsantosdba.blogspot.com/2010/04/concorrencia-e-consistencia-dos-dados.html


att

0
|
0

Julio Medeiros
   - 15 jan 2014

Vou ver o post, mas com relação à resposta anterior sim é para gerar um numero de matricula, porem quando deixo o banco de dados gerar o numero sequencial eu não tenho liberdade de alterar se precisar.
Exemplo:
1,2,3,4,5,6
Se eu precisar excluir o numero 6 por erro do usuário e deixar livre novamente para o próximo cadastro eu não consigo pois o banco de dados já vai gerar o numero 7.
e eu preciso seguir a sequencia certinha sem pular numero.

0
|
0

Joel Rodrigues
   - 15 jan 2014

Fazer esse tipo de controle manualmente é um pouco inseguro, principalmente por essa questão de do concorrência. Em vários dos projetos legados em que trabalho encontrei pontos com essa falha e a solução foi proceder da seguinte forma: gerar o número e gravá-lo em algum lugar, de forma que o próximo sequencial já seja obtido a partir dele. Assim, haveria uma tabela do tipo UltimoCodigoDigitado ou CodigosDigitados (que no meu caso já existia), que seria usada para gerar os sequenciais.
Nesse modelo, uma vez gerado o código ele é perdido, ou seja, se o usuário não concluir a inserção do registro, aquele código já foi gravado e não será gerado o mesmo valor novamente. Isso resolve a questão da concorrência, mas depende das suas regras de negócio para saber se é adequado.
De toda forma, se não for extremamente necessário que o usuário saiba o código antes de salvar o registro, aconselho a evitar essa situação e usar os mecanismos do banco para gerar os sequenciais.
Abraço e bons códigos.

0
|
0

Chiodini
   - 15 jan 2014

Bom dia,

Bom se a sequência for de identificação do registro,
Não vejo problema em ter numeros não utilizado,
pelo contrário isso é extremamente normal em qualquer sistema,
para que seja mantida a integridade dos dados, é a melhor forma de fazer.

Ja utilizei em um sistema a mesma maneira que o Joel descreve.
Assim garante que nenhum registro vai ser duplicado,
Porem não vai ter a funcionalidade que vocês esta querendo de alterar.

Lembrando que se for um identificador, as boas praticas dizem exatamente isso,
que o ID é unico, e uma vez alocado deve permanecer para aquele registro,
se precisar excluir e criar outro registro, deve ser gerado outro ID.

Att,
Chiodini

0
|
0

Julio Medeiros
   - 15 jan 2014

É que o cliente exige que seja uma sequencia certinha,
Mas muito obrigado pela ajuda, o que eu precisava saber era isso mesmo, se era possível e se o funcionaria legal, vou precisar mudar algumas coisas aqui.
Valeu mesmo pelas informações.

0
|
0

Joel Rodrigues
   - 15 jan 2014

Valeu então, Julio.
Estou marcando o tópico como concluído, uma vez que a questão inicial foi respondida. Se surgirem novas dúvidas, fique à vontade para abrir novos tópicos.
Abraço e bons códigos.

0
|
0