2012-12-06 2 views
0

JDBC를 사용하고 있지만 롤백 및 세이브 포인트에 몇 가지 문제가 있습니다. 이 코드가 실제로 세이브 포인트로 롤백되지 않고 삽입 된 레코드가 남아있는 이유를 이해할 수 없습니다.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(); 
} 

미리 감사드립니다.

+0

어떤 데이터베이스를 사용하고 있습니까? –

답변

0

Savepoint는 DBMS의 기능 일 뿐이므로 데이터베이스 엔진의 문제 일 수도 있습니다.

this 질문을 확인하실 수 있습니다.

관련 문제