0

我正在使用 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();
}

提前致谢。

4

1 回答 1

0

因为 Savepoint 只是 DBMS 的功能。我认为这可能是您的数据库引擎的问题。

你可以检查这个问题。

于 2012-12-06T01:46:05.680 回答