Bom dia!
Por necessidade, tenho uma tabela chamada ‘mascara’ que permite ao usuário inserir em massa uma determinada quantidade de ‘pagamentos’, para não ter que fazer um a um na unha.
Funciona em partes, o banco é relacional, criei esta tabela para ‘adiantar’ o lado tendo em vista que todos os meses, teoricamente vários pagamentos se repetem, enfim…
Consigo fazer a cópia assim:
public void incluirPeriodoPagamento(Pagamento p1) throws SQLException {
String sql1 = "INSERT INTO log ( datainclusao, usuarioinclusao, logincremento ) VALUES (?,?,?)";
PreparedStatement stmt1 = conexao.prepareStatement(sql1);
stmt1.setString(1, p1.getDataInclusao());
stmt1.setString(2, p1.getUsuarioInclusao());
stmt1.setString(3, p1.getLogIncremento());
stmt1.execute();
stmt1.close();
String sql2 = "INSERT INTO pagamento (renovacao, diarenovacao, formapagamento, valordevido, "
+ "fornecedor_idfornecedor, categoria_idcategoria, controle_idcontrole, filial_idfilial, log_idlog) "
+ "SELECT renovacao, diarenovacao, formapagamento, valordevido, fornecedor_idfornecedor, "
+ "categoria_idcategoria, controle_idcontrole, filial_idfilial, (SELECT MAX(idlog) FROM log) "
+ "FROM mascara WHERE mascara.filial_idfilial = ? ";
PreparedStatement stmt2 = conexao.prepareStatement(sql2);
stmt2.setLong(1, p1.getIdFilial());
stmt2.execute();
stmt2.close();
String sql3 = "UPDATE pagamento SET periodomes=?, periodoano=? WHERE periodomes IS NULL AND periodoano IS NULL ";
PreparedStatement stmt3 = conexao.prepareStatement(sql3);
stmt3.setString(1, p1.getPeriodoMes());
stmt3.setString(2, p1.getPeriodoAno());
stmt3.execute();
stmt3.close();
}
Mas na última parte, quando eu tento fazer o Update na tabela pagamento substituindo a coluna periodomes e periodoano quando estão nulas, não acontece nada…
No MySQL ele só faz o Update se eu fizer isto antes:
SET SQL_SAFE_UPDATES=0;
Outra coisa que notei é que, obviamente da maneira que fiz, a tabela LOG só fica com 1 log registrado para todo o que eu fiz de Insert.
Alguém poderia me ajudar com isto?
Teria como eu colocar isto dentro de um laço? Acredito que assim seria a maneira correta, mas não sei como faze-la.
Agradeço muuito pela ajuda.

