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/
'IT > Mysql & MariaDB' 카테고리의 다른 글
[Mysql] delete join (0) | 2021.02.25 |
---|---|
[Mysql] Date_Format 날짜 포멧 (0) | 2021.01.27 |
[Mysql] CASE WHEN Function(다중 조건문) 사용 방법 (0) | 2020.10.27 |
[Mysql] 문자열 치환 함수 replace (0) | 2020.09.22 |
[Mysql] ON DUPLICATE KEY UPDATE ... (0) | 2020.07.24 |