您可以使用类似于以下代码的内容使两个SQL成为原子。这保证了全部或全部规则。
public boolean insertIntimationDetails(StockForm ofform) {
boolean status = false;
PreparedStatement pst = null;
Connection conn = null;
Statement stat = null;
try {
System.out.println("Inside insertIntimationDetails ");
String query = " update purchase_details set intimation_quantity = ? where temple=? and Stock_name=? ";
System.out.println(query);
conn = getConnection();
conn.setAutoCommit(false); // Disable Auto Commit
System.out.println(query);
pst = conn.prepareStatement(query);
System.out.println(ofform.getIntimationQuantity());
pst.setString(2, ofform.getForTemple());
pst.setString(3, ofform.getStockName());
pst.setLong(1, ofform.getIntimationQuantity());
int rows = pst.executeUpdate();
if (rows > 0) {
status = true;
}
stat = conn.createStatement();
boolean status2 = stat
.execute("Insert into item_details(stock_name,temple,quantity) SELECT a.stock_name, a.temple, SUM(Case when Type='purchase' then quantity else (quantity*-1) End) AS quantity FROM purchase_details a GROUP BY a.stock_name, a.temple");
if (status && status2) {
conn.commit();
} else {
conn.rollback();
}
} catch (Exception e) {
e.printStackTrace();
conn.rollback();
} finally {
try {
if (pst != null)
pst.close();
if (stat != null)
stat.close();
if (conn != null)
conn.close();
} catch (Exception e2) {
e2.printStackTrace();
}
}
return status;
}