JDBCを使用していますが、ロールバックとセーブポイントで問題が発生しました。このコードが実際にセーブポイントにロールバックせず、挿入されたレコードが残っている理由がわかりません。
try {
conn.setAutoCommit(false);
stmt = conn.createStatement();
sp = conn.setSavepoint();
stmt.executeUpdate("INSERT INTO test(id) VALUES(" + args[0] + ")");
if(true) {
conn.rollback(sp);
System.out.println("rollback");
}
} catch (SQLException ex) {
// handle any errors
System.out.println("SQLException: " + ex.getMessage());
System.out.println("SQLState: " + ex.getSQLState());
System.out.println("VendorError: " + ex.getErrorCode());
System.out.println("rollback");
conn.rollback(sp);
} finally {
conn.commit();
}
前もって感謝します。