DataBase/MariaDB & MySQL

[iBatis+Spring+mariaDB] AUTO_INCREMENT의 초기화와 transaction에 관하여

희랍인 조르바 2018. 5. 3. 09:42

회사에서 iBatis를 사용하는 부분이 아직 남아있다.(대부분 MyBatis로 전환했지만.)


iBatis부분에서 <selectKey> 기능을 활용해 sequence를 만들어내고 있었다. 


이 부분은 auto_increment로서 숫자가 자동으로 올라가고 있었다. 


난 지금 JUnit test를 하는 중이기 때문에 클래스 부분에서 @Transactional을 적용하고 있었다.


몰랐던 사실이지만, auto_increment는 transaction이 적용되지 않는다는 것이었다.


그 뜻은 auto_increment는 rollback이 적용되지 않는다는 것.


JUnit test를 할 때 이런 경우가 있다면, 테스트를 한 번 해보고 @Ignore처리를 하면 좋을 것 같다.


auto_increment를 돌릴 수 있는 방법이 있다면, 직접 sql문으로 값을 바꿔 주는 것이다.


내 경우, 테스트를 해본 후 원래의 auto_increment 값으로 돌려줬다. 


값을 변경하는 쿼리는 다음과 같다.


ALTER TABLE test_table(테이블명) auto_increment = 1;