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

セーブポイントは DBMS の機能にすぎないためです。データベースエンジンの問題かもしれません。

この質問を確認できます。

于 2012-12-06T01:46:05.680 に答える