STUDY/IT

오라클 시퀀스 생성/수정/삭제 (Oracle Sequence)

Json웅 2017. 9. 20. 12:16

오라클 시퀀스는 숫자를 자동으로 생성하는 것으로 다량의 사용자가 사용할 때, 
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