본문 바로가기

IT/Mysql & MariaDB

[MariaDB] Sequence 사용 방법

 

1. Sequence

ID 값을 숫자가 아닌 다양한 방식으로 저장하고 싶은 경우 사용합니다. Thread-safety 하게 ID를 발급 받을 수 있으며, AUTO_INCREMENT 대신 사용할 수 있습니다.
Sequence는 값을 캐시하므로 경우에 따라 AUTO_INCREMENT 보다 빠를 수 있다고 합니다.

MariaDB의 Sequence 기능은 10.3버전 부터 지원됩니다.

 

2. Sequence 문법

CREATE [OR REPLACE] [TEMPORARY] SEQUENCE [IF NOT EXISTS] sequence_name
[ INCREMENT [ BY | = ] increment ]
[ MINVALUE [=] minvalue | NO MINVALUE | NOMINVALUE ]
[ MAXVALUE [=] maxvalue | NO MAXVALUE | NOMAXVALUE ]
[ START [ WITH | = ] start ] [ CACHE [=] cache | NOCACHE ]
[ CYCLE | NOCYCLE]
[table_options]

 

3. 간단한 Sequence 사용 방법

# 10.3 버전 이상인지 확인 
SELECT VERSION();

 

1) Sequence 생성

#시작값이 1이고 1씩 증가하는 "my_seq" Sequence를 생성
CREATE SEQUENCE my_seq START WITH 1 INCREMENT BY 1;

2) NEXTVAL

# 다음 sequence를 반환한다. 
# 처음 생성 한 것이면 start 값을 반환 
# thread-safety
SELECT NEXTVAL(my_seq);

3) LASTVAL

# 현재 sequence를 반환
# NEXTVAL을 한번도 실행시키지 않았다면 NULL 반환
SELECT LASTVAL(my_seq);

4) Sequence 초기화

# my_seq Sequence를 1로 초기화 한다.
# nextval를 실행하지 않은 상태로 lastval를 실행하면 초기화 전 값이 반환된다.
# 즉 한번이라도 nextval을 실행해야지 sequence가 초기화된다. 
ALTER SEQUENCE my_seq RESTART 1;

 


참조 

https://mariadb.com/kb/en/create-sequence/