• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

TRUNCATE TABLE 시 AUTO_INCREMENT 컬럼 1로 초기화

23.05.11 01:44 작성 조회수 2.18k

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

질문자

2023.05.11

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

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

제가 잘못 알고 있었군요

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

다시 한번 감사드립니다