Ola pessoal! estou tendo problemas em inserir um produto já existente em uma venda pois eu tenho a tabela produto, venda e itens_produto_venda, queria somar a quantidade do produto já existente na tabela itens_produto_venda pois ocorre o seguinte erro " ERRO duplicar valor da chave viola a restrição de unicidade 'pk_venda_produto ’ Detalhe: Chave(id_venda, id_produto)=(86,8) já existe" como faria pra resolver essa situação? estou há dias tentando resolver isso Agradeço muito se alguém puder ajudar.
Segue o método estou utilizando MVC:
public void inserirItem(ModeloVenda mod) {
buscarCodProd(mod.getProduto());
conectaVenda.conexao();
try {
//Tentar atualizar a quantidade do Item do produto gerado
if (conectaVenda.rs.next()) {
conectaVenda.executaSQL("select v.*, it.* from venda v, itens_produto_venda it where v.id_venda = it.id_venda and v.id_venda ="+ codVenda);
conectaVenda.rs.first();
codVenda = conectaVenda.rs.getInt("id_venda");
qtdeItem = conectaItem.rs.getInt("qtde_produto");
result = qtdeItem + mod.getQtdeItem();
//codItem = conectaVenda.rs.getInt("id_produto");
PreparedStatement pst = conectaVenda.conn.prepareStatement("update itens_produto_venda set qtde_produto = ? "+
"where id_venda = ? and id_produto = ?");
pst.setInt(1, result);
pst.setInt(2, codVenda);
pst.setInt(3, codItem);
pst.executeUpdate();
JOptionPane.showMessageDialog(null, "produto atualizado!");
} else {PreparedStatement pst = conectaVenda.conn.prepareStatement("insert into itens_produto_venda "+
"(id_venda, id_produto, qtde_produto) values(?,?,?)", conectaVenda.stm.RETURN_GENERATED_KEYS);
pst.setInt(1, mod.getCod());
pst.setInt(2, codProduto);
pst.setInt(3, mod.getQtdeItem());
pst.executeUpdate();
conectaVenda.rs = pst.getGeneratedKeys();
conectaVenda.rs.next();
codVenda = conectaVenda.rs.getInt("id_venda");
codItem = conectaVenda.rs.getInt("id_produto");
//Dando baixa de estoque (diminuindo a quantidade em estoque do campo qtde da tabela produto)
conectaVenda.executaSQL("select * from produto where nome = '"+ mod.getProduto() +"'");
conectaVenda.rs.first();
quant = conectaVenda.rs.getInt("qtde");
result = quant - mod.getQtdeItem();
pst = conectaVenda.conn.prepareStatement("update produto set qtde = ? where nome = ?");
pst.setInt(1, result);
pst.setString(2, mod.getProduto());
pst.execute();
JOptionPane.showMessageDialog(null, "produto inserido!");
conectaVenda.desconecta();
}
} catch (SQLException ex) {
conectaVenda.desconecta();
JOptionPane.showMessageDialog(null, "Erro ao inserir produto!\n ERRO: "+ ex.getMessage());
}