2014-09-25 6 views
0

Java 및 Oracle SQL 11g를 실행 중입니다.오라클은 자동 커밋 = false이고 커밋 또는 롤백이 없을 때 SQL을 어떻게 처리합니까?

데이터베이스에 대한 연결을 설정하면 연결을 AutoCommit = False로 설정했지만 commit() 또는 rollback()이 없습니다.

나는 내 코드를 try/catch /에 싸서 마침내 롤백했다. 그러나 나는 테이블에서 두 개의 레코드가 누락 된 것으로 나타났습니다. 내 가정은 내가 디버그 모드에서 코드에 있었고 중지 버튼을 클릭했기 때문에 롤백 명령에 도달하지 못했고 중간에 커밋을하지 않았기 때문입니다.

+0

은 'finally'블록이 실행되도록되어 있지 않습니다 _always_? 그렇다면 항상 뒤로 굴러 다니는 것입니다 ... – Javier

답변

1

커밋이나 롤백이 없으면 트랜잭션 중 하나가 발급 될 때까지 대기 상태가 유지됩니다. close the Connection object을 시도한 경우 결과는 구현에 따라 다릅니다. 거래가 커밋되었을 수 있습니다. 롤백되었을 수 있습니다.

+1

오라클과 관련하여 특별히 다음과 같이 대답했습니다 : http://stackoverflow.com/questions/12865262/oracle-disconnect-behaviour 그리고 다른 누군가가 다른 곳에서 지적했듯이 응답에는 특정 명령 전에 암시 적 커밋이 있습니다. http://docs.oracle.com/cd/E11882_01/server.112/e25789/sqllangu.htm#CHDHBIGA – LINEMAN78

+0

그게 뭘 찾고 있었습니까! – Kairan