Editar banco de dados com java

2 respostas
lucas_dias

Olá pessoal estou com uma aplicação java desktop que faz o processo de vendas de uma empresa a cada venda é acrescentado uma venda no banco de dados é diminui um na quantidade do estoque até ai tudo bem
porem este processo é executado em duas maquinas e ao fazer o processo ao mesmo tempo embora duas vendas são acrescentadas no banco, somente uma dado baixa no estoque estou usando um insert para inserir as vendas e um update para dar baixa no estoque alguem sabe pq isso acontece?

2 Respostas

TerraSkilll

Sem ver seu código fica difícil dizer. Mas ele deve ter várias classes e, se você colocar aqui, dificilmente alguém vai ler tudo.

Olhando por cima, parece um problema clássico de concorrência: quando as vendas são inseridas, você pega os dados de estoque atuais, subtrai X e faz um update. Mas, se entre pegar o saldo de estoque atual e fazer o update, outra venda é inserida, essa nova venda pega uma quantidade desatualizada.

Uma recomendação é, ao invés de você fazer o update pelo Java, usar uma procedure ou trigger. Assim, sempre que a tabela de venda tiver um novo registro, o estoque para aquele produto é atualizado. Pode também criar uma procedure para recontar o estoque (somando todas as vendas) e colocá-la para rodar periodicamente.

Abraço.

lucas_dias

Bom vou tentar explicar um poco melhor é um deposito de gás e o programa faz o seguinte digamos que temos 100 botijoes de gas 50 cheios e 50 vazios então cada vez que uma venda é realizada diminui um cheio e aumenta um vazio ficando 49 cheios e 51 vazios quando a vanda e feita em momentos diferentes em cada pc tudo atualiza certo porem se 2 vendas são realizadas ao mesmo momento cada venda de um pc diferente, na tabela de vendas é acresentada 2 vendas, que é o certo que deve acontecer porem na tabela produtos a baixa é dada somente uma vez.
Não postei o codigo pq ele funciona perfeitamente ou seja o problema não é o codigo e realmente são muitas classes o problema é esse eu o descobri fazendo uma brincadeira com uma pessoa pegamos 2 vendas exatamente iguais e as realizamos no exato momento cada um de seu pc e então percebi isso

Criado 15 de novembro de 2017
Ultima resposta 15 de nov. de 2017
Respostas 2
Participantes 2