Ir para conteúdo
Fórum Script Brasil
  • 0

Transação e Multi Usuário


wRangel

Pergunta

Estou tendo problemas com modelo transacional no Mysql. Estou usando da seguinte forma:

Começo uma transação em uma aplicação que roda em uma máquina cliente...:

Start Transaction;

Depois executo vários scripts sql, entre eles o primeiro é um select que busca o "id" de uma tabela e soma 1 para gerar o próximo ID....

Ao final dou um Commit ou se houver problemas um RollBack.

O problema é que se quando um cliente starta uma transação como descrita acima, e o script sql busca e gera o próximo ID, e faz um insert, tudo isso dentro da transação e ANTES de dar um commit, Um outro cliente tambem starta uma transação, que tb roda o script para gerar o próximo ID, ele "aponta" para um ID igual ao do outro cliente , pois o mesmo ainda não deu Commit , quando um deles finaliza dando o Commit, "pega" o id gerado, e quando o outro cliente vai finalizar dando o commit, dá um erro de Key Violation porque esta com um valor de ID que já foi salvo no banco.

Como usar transação e evitar isso, ou tem como fazer um select que "enchergue" esse registro fantasma, para evitar Key Violation?

Desde já grato pelas possíveis respostas.

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

Se a transação for demorada então você tem que ou criar o id fora da transação ou usar uma técnica mais sofisticada para criar o id.

Se a transação for rápida e o erro for eventual então simplesmente teste o erro "Key Violation" na aplicação e tente de novo.

Qual é a linguagem da apllcação cliente?

Editado por Kakao
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,6k
×
×
  • Criar Novo...