2012-03-21 2 views
0

방금 ​​jdbc를 배우고 다양한 테스트를 시작했습니다.jdbc 4 연결 롤백 자동 증가 문제

나는 다음과 같은 상황에 걸쳐 온

  • 세트 세이브 포인트
  • (준비된 문장을 만들고
  • 이 실행 존재하지 않는 외래 키 값을 테이블에 (삽입 데이터를 실행하려고) 메서드가 실패하고 롤백을 수행합니다.
  • 유효한 쿼리를 실행하면 행이 db에 삽입되지만 기본 키는 n + 1 대신 n + 2로 설정됩니다. 여기서 n은 마지막으로 삽입 된 값입니다. 쿼리가 실패하더라도 인덱스 자동 증가를 추측하십시오.

이것을 피하고 n + 1을 설정하는 메커니즘이 있습니까?

참고. MySQL을 사용하고 있습니다.

감사합니다.

+2

글을 읽는 방법에 대해 http://stackoverflow.com/questions/449346/mysql-auto-increment-does-not-rollback topic? –

+0

나는 그 글에 동의하지만, 내 애플 리케이션 로직에서 그걸 고려하고 싶지 않다. 나는 왜 그 현상이 일어나고 있는지 그리고 이것을 극복 할 수있는 방법이 있는지 궁금해하고 있었다. – Radu

+0

id 생성이 트랜잭션과 독립적이기 때문에 발생합니다. 많은 노력 없이는 그것을 극복 할 수있는 방법이 없습니다. id에 어떤 의미도 부여하지 마십시오. – Hiro2k

답변

0

이 동작은 MySQL auto_increment에서 일반적입니다. 글쎄, 당신은 mysql_insert_id()를 사용하여 마술을 할 수있다.