duplicando registro

14/01/2014

0

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?
Julio Medeiros

Julio Medeiros

Responder

Posts

14/01/2014

Leandro Chiodini

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
Responder

14/01/2014

Leandro Chiodini

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

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


att
Responder

15/01/2014

Julio Medeiros

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.
Responder

15/01/2014

Joel Rodrigues

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.
Responder

15/01/2014

Leandro Chiodini

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

Responder

15/01/2014

Julio Medeiros

É 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.
Responder

15/01/2014

Joel Rodrigues

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.
Responder

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

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

Aceitar