본문 바로가기
데이터노트/MariaDB

MariaDB에서의 AUTO INCREMENT 와 사용법

by 테크한스 2021. 11. 26.

우선 AUTO INCREMENT가 무엇일까요?

그것은 바로 새 레코드가 테이블에 삽입 될 때 고유 번호가 자동으로 생성되도록 합니다

 

개발하다보면 특정 테이블의 row값들을 넘버링(numbering)을 해주어야 하는 요건이 생기게 됩니다.

이런 경우 사용하는 테이블 옵션값 중에 하나이며 거의 모든 데이터베이스에서 지원되는 기능이라고 보면 됩니다.

 

여기서는 특히 MariaDB에서 해당 옵션을 테스트할 때의 환경과 스크립트 등을 이용해

개발시 해당 테이블 생성시 에러나 개발에러가 발생했을 때 문제가 무엇인지 초기화 했을때의 (깨끗한 상태) 테스트 환경을 기록하는 의미가 크다고 하겠습니다.

 

InnoDB 엔진의 경우 Primary Key 생성과 동시에 인덱스 사이즈에 영향을 주기 때문에 테이블 설계시 많이 권고 하는 방법이며 MySQL 5.7 이전 버전에서는 MyISAM 엔진의 경우 auto_increment 값이 파일에 저장 해서 관리 되는 반면에 InnoDB 인젠의 경우 메모리 기반으로 관리됩니다.

 

사용은 주로 Primary Key 컬럼에 auto increment 옵션을 추가해서 사용합니다.

 

CREATE TABLE `COUNT_INFO` (
  `seq_no` int(11) NOT NULL AUTO_INCREMENT,
  `id` varchar(50) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
  `name` varchar(50) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
  `pswd` varchar(50) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,  
  PRIMARY KEY (`seq_no`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci
;

데이터도 추가해 보자 시퀀스처럼 auto increment 하는지 확인해 보자

 

INSERT INTO COUNT_INFO(id, name, pswd) values('id01', 'idname01', 'testtest');
INSERT INTO COUNT_INFO(id, name, pswd) values('id02', 'idname02', 'testtest');
INSERT INTO COUNT_INFO(id, name, pswd) values('id03', 'idname03', 'testtest');

seq_no가 1씩 증가됨 을 볼 수 있다

 

2번과 3번 row를 지우고 다시 입력해보자

delete from count_info where seq_no='2';
delete from count_info where seq_no='3';

다시 2건의 row를 입력해보자

INSERT INTO COUNT_INFO(id, name, pswd) values('id04', 'idname04', 'testtest');
INSERT INTO COUNT_INFO(id, name, pswd) values('id05', 'idname05', 'testtest');

결과는 예상대로

 

이 결과가 이상한가? 

 

값을 초기화 하려면 해당 테이블을 truncate 하시라

 

truncate table count_info;
INSERT INTO COUNT_INFO(id, name, pswd) values('id06', 'idname04', 'testtest');
INSERT INTO COUNT_INFO(id, name, pswd) values('id07', 'idname05', 'testtest');

결과는 

 

중간에 값을 삭제 추가 해도

그리고 마리아DB를 재기동해도 tuncate 전까지는 해당되는 seq_no 계속 증가하게 된다

 

댓글