오라클 시퀀스는 숫자를 자동으로 생성하는 것으로 다량의 사용자가 사용할 때,
PK에 대한 Unique한 값을 만들어주는 기능으로 사용할 수 있다.
생성
CREATE SEQUENCE [시퀀스명]
START WITH [시작번호]
INCREMENT BY [증가값]
MAXVALUE [최대값 / NOMAXVALUE]
MINVALUE [최소값 / NOMINVALUE]
CACHE [캐쉬 / NOCACHE]
CYCLE [반복여부 / NOCYCLE]
- START WITH : 시퀀스의 시작번호
- INCREMENT BY : 증가값, 마이너스값을 입력하면 DECENDING SEQUENCE 생성
- MAXVALUE : 시퀀스의 최대값. NOMAXVALUE 시 ACENDING SEQUENCE는 1027,
DECENDING SEQUENCE는 -1.
MAXVALUE는 START WITH나 MINVALUE 보다 커야함.
- MINVALUE : 시퀀스의 최소값. NOMINVALUE 시 ACENDING SEQUENCE는 1,
DECENDING SEQUENCE는 -1026
MINVALUE는 START WITH나 MAXVALUE보다 작아야함.
- CYCLE : 반복여부
- CACHE : 캐쉬에 생성해 놓을 시퀀스 갯수.
최대값은 (CEIL (MAXVALUE - MINVALUE)) / ABS (INCREMENT)
수정
ALTER SEQUENCE [시퀀스명]
INCREMENT BY [증가값]
MAXVALUE [최대값 / NOMAXVALUE]
MINVALUE [최소값 / NOMINVALUE]
CACHE [캐쉬 / NOCACHE]
CYCLE [반복여부 / NOCYCLE]
- 해당 옵션에 값을 넣어 수정
- 시작값은 수정 불가
삭제
DROP SEQUENCE [시퀀스명]
- 시퀀스 삭제
%% 개인적인 경험
% 시작값은 수정이 불가하니 TABLE의 값과 SEQUENCE가 꼬였으면 새로 만드는 것이
정신건강상 좋은 듯.
% DB 시퀀스를 사용하지 않고 PK를 명시하여 INSERT가 하는 경우,
시퀀스는 증가하지 않은 채 TABLE의 PK는 시퀀스의 현재값보다 크기 때문에
프로세스에 따른 INSERT구문 실행시 DUPLICATE 오류가 발생한다.
또한 MIGRATION 시 SEQUENCE가 정상적으로 생성이 안되었을 경우 또한
DUPLICATE 오류가 발생한다.
이런 경우에 INSERT 전 PK에 대한 MAXVALUE를 확인 후 INSERT 구문에 넣곤 하는데,
TRANSACTION이 다량 발생하는 경우 또한 DUPLICATE 가 발생하므로
SEQUENCE를 맞춰주거나 다시 생성하자
'STUDY > IT' 카테고리의 다른 글
DBeaver 설치 및 사용 (0) | 2019.04.15 |
---|---|
리눅스 vi 에디터 명령어 모음 (0) | 2017.09.28 |
리눅스 명령어 grep 사용하기 (0) | 2017.09.26 |
리눅스 명령어 find 사용하기 (0) | 2017.09.25 |
리눅스 크론탭(Linux Crontab) 사용하기 (0) | 2017.09.21 |