inflearn logo
강의

Course

Instructor

Non-majors catching up with majors - Database, SQL

Inserting the first data (INSERT INTO)

설정에서 AutoIncrement를 바꿔도 수정이 되지 않습니다.

Resolved

1211

fable1

8 asked

0

Row를 지운 후 auto_increment를 설정에서 1로 변경하도록 시도했습니다.
아래 사진처럼 적용 완료되었다는 말만 나오고 도로 카운트가 원상복귀 됩니다.
q1.pngq2.png

sql mysql dbms/rdbms mysql-workbench

Answer 2

1

jihwooon

강의를 구매하지 않아 어떤 환경에서 문제가 발생하는지는 잘 모르지만 질문자 분의 질문을 추측해보고 비슷한 상황을 만들어보고 제 나름대로 해결책을 정리 해봤습니다.


 

질문자 문제

현재 auto_increment값은 5 입니다.

Row 데이터를 삭제 후 auto_increment 초기화 1로 변경하였습니다.

하지만 auto_increment 은 그대로 값 5가 출력이 됩니다.

 

문제 상황

auto_increment를 초기화를 시도해 값 1로 변경하려고 시도했습니다.

SQL 구문 ALTER TABLE 데이터베이스.테이블 AUTO_INCREMENT = 1;로 초기화를 시도했습니다. 그렇지만 auto_increment 값은 초기화 전 값 그대로 변경 되지 않은 상태입니다.

 

예시

// 데이터를 주입합니다.
insert into books (author_fname) values ("Don");
insert into books (author_fname) values ("John");
insert into books (author_fname) values ("Sally");
insert into books (author_fname) values ("Jam");

select MAX(book_id) + 1 FROM books // 현재 AUTO_INCREMENT 값은 5입니다.

DELETE FROM books // Row 데이터를 삭제합니다.

insert into books (author_fname) values ("Don"); // 다시 Insert를 합니다.

ALTER TABLE books AUTO_INCREMENT = 1; // AUTO_INCREMENT를 1로 초기화합니다.

select MAX(book_id) + 1 FROM books // 현재 AUTO_INCREMENT 값은 6입니다.

 

답변

Delete 명령어로 행(Row)을 삭제 시 Delete 명령어는 행을 삭제하지만 테이블에 공간에 남아 있습니다.

그래서 Insert를 할 시 초기화 된 상태가 아닌 지워진 공간 위에서 추가 되기 때문에 Id 값은 +1이 된 상태로 값이 추가 됩니다.

이 상태에서 AUTO_INCREMENT = 1를 초기화 해도 1로 변경이 되지 않습니다.

 

MYSQL 공식문서 에는 AUTO_INCREMENT = N다음과 같이 정의 되어 있습니다.

ALTER TABLE books AUTO_INCREMENT = N; 은 자동 증가 카운터 값을 현재 최대값보다 큰 값으로만 변경할 수 있습니다.

 

AUTO_INCREMENT = N은 현재 최대값 보다 큰 수로만 변경이 가능함으로 1은 현재 카운트 5보다 작아서 변경이 불가능합니다.

AUTO_INCREMENT 를 1로 초기화를 해야 한다면 Truncate table <<테이블명>> 으로 테이블 데이터를 완전 초기화를 합니다.

혹은

Delete 를 한 상태에서 다음 최대값이 null이 된 상태를 확인 합니다. 이 상태에서 ALTER TABLE books AUTO_INCREMENT = 1로 초기화 하면 AUTO_INCREMENT 값은 1로 초기화가 됩니다.

 

참조

- https://dev.mysql.com/doc/refman/8.2/en/innodb-auto-increment-handling.html

0

zerocho

저 창 껐다가 켠 거 맞나요? 데이터도 하나도 없는 상태인가요?

Substack 1년 제공

1

9

3

특별 학습 자료 프로모션 1년 멤버십 무료 제공 문의드립니다

0

20

2

스프링부트 서버 에러나요

0

9

1

코드를 첨부해야하는 이유가 있나요?

0

15

2

간단한 오타 제보입니다.

0

15

1

큰 범위 조회 시 EXPLAIN의 rows 값이 정확하지 않은 이유가 궁금합니다.

0

33

2

실제 FK제약조건을 설정하지 않는이유

0

30

2

조회속도 개선에서 더 개선하는 방법이 궁금합니다.

0

24

2

Sequence 관련 질문

1

28

2

Image Only Query

1

29

2

Free Edition 실습 영상은 아직 업데이트전인가요?

0

21

1

라이브 운영중인 환경의 테이블에 인덱스 추가시 고려사항

0

33

2

상품 정보 크롤링

0

28

2

설치오류 질문드립니다.

0

124

3

설치 오류 질문드립니다.

0

230

1

제 2 정규형 질문

0

192

1

외래키 On Delete SET NULL 관련

1

393

1

일대다, 다대다 관계 질문

0

386

1

3정규화 퀴즈에 관해 질문 드립니다.

0

268

1

중간 테이블 관련해서 질문드립니다

0

322

1

offset 방식과 성능 질문

0

358

1

limit offset 단점

0

386

1

[섹션3] 사원 테이블 데이터 추가하실 분들을 위한 쿼리문

3

519

1

users 테이블과 workspace 테이블의 관계

0

448

1