인프런 커뮤니티 질문&답변

pgrrr119님의 프로필 이미지
pgrrr119

작성한 질문수

실전! 스프링부트 상품-주문 API 개발로 알아보는 TDD

JPA 적용하기

TRUNCATE TABLE 시 AUTO_INCREMENT 컬럼 1로 초기화

작성

·

2.9K

1

MySQL이나 H2 에서 TRUNCATE TABLE 시 AUTO_INCREMENT 컬럼값도 1로 초기화되는 걸로 알고 있습니다. 그런데 강의에서는 TRUNCATE 후 AUTO_INCREMENT 컬럼인 ID 를 1부터 다시 시작하게 하는 쿼리를 추가하셔서 어떤게 맞는건지 헷갈립니다

좋은 강의 감사합니다

답변 1

1

이중석님의 프로필 이미지
이중석
지식공유자

안녕하세요 pgrrr119 님!

말씀해주신대로 MySQL에서 TRUNCATE TABLE을 할 경우 AUTO_INCREMENT 컬럼 값이 초기값으로 재설정되어 AUTO_INCREMENT를 1으로 다시 변경하는 쿼리를 실행할 필요가 없습니다.
https://dev.mysql.com/doc/refman/8.0/en/truncate-table.html

H2는 TRUNCATE TABLE을 실행하더라도 IDENTITY가 기본값으로 재설정되지 않습니다!

https://www.h2database.com/html/commands.html#truncate_table

IDENTITY를 초기화 하기 위해서는 영상에서처럼

ALTER TABLE 'TABLE_NAME' ALTER COLUMN COLUMN_NAME RESTART WITH 1;

또는

TRUNCATE TABLE 'TABLE_NAME' RESTART IDENTITY;

와 같이 TRUNCATE TABLE 명령어 뒤에 RESTART IDENTITY를 추가해주시면 됩니다!

실제로 ID를 1으로 재설정하는 쿼리를 주석처리하고 전체 테스트를 실행하면 테스트 격리가 안되서

테스트가 실패하는것을 확인하실 수 있습니다!

pgrrr119님의 프로필 이미지
pgrrr119
질문자

친절한 답변 감사드립니다!!

공식 문서까지 찾아주시다니.. 감동입니다..

제가 잘못 알고 있었군요

역시 GPT 보단 공식 문서를 봐야겠네요

다시 한번 감사드립니다

 

pgrrr119님의 프로필 이미지
pgrrr119

작성한 질문수

질문하기