시퀀스란? SEQUENCE
시퀀스 : 연속적인 숫자를 생성해내는 객체
숫자형 데이터이며 기본키인 컬럼에 시퀀스를 설정할 경우,
테이블에 데이터를 삽입할 때마다 자동으로 각 행을 식별할 수 있는 시퀀스값이 할당되어 저장됩니다.
시퀀스 값이 자동으로 +1 되도록 설정하는 경우가 일반적입니다.
시퀀스 생성
- INCREMENT BY : 시퀀스 실행 시 증가시킬 값
- START WITH : 시퀀스의 시작값이다. (MINVALUE과 같거나 커야 한다)
- MINVALUE : 시퀀스가 시작되는 최솟값이다.
- MAXVALUE : 시퀀스가 끝나는 최댓값이다.
- NOCYCLE | CYCLE : NOCYCLE (반복안함), CYCLE(시퀀스의 최댓값에 도달 시 최솟값 1부터 다시시작)
- NOCACHE | CACHE : NOCACHE(사용안함), CACHE(캐시를 사용하여 미리 값을 할당해 놓아서 속도가 빠르며, 동시 사용자가 많을 경우 유리)
- NOORDER | ORDER : NOORDER(사용안함), ORDER(요청 순서로 값을 생성하여 발생 순서를 보장하지만 조금의 시스템 부하가 있음)
--실습, 게시판 id를 seq로 부여
CREATE SEQUENCE test.board_id_seq
INCREMENT BY 1
START WITH 1
MINVALUE 1
MAXVALUE 9999
nocycle
nocache
noorder;
[Oracle] 오라클 시퀀스(Sequence) 생성 및 사용법 (자동증가, 일련번호)
오라클에서는 자동 증가 컬럼을 사용할 수가 없다. 다른 DB에서는 컬럼 자체에 옵션이 있으나, 오라클에서는 컬럼의 값을 증가시키기 위해서는 MAX(컬럼) + 1 또는 시퀀스를 사용하여 일련번호를
gent.tistory.com
시퀀스 사용
데이터 insert시 시퀀스를 사용하길 원하는 컬럼의 value값을 [시퀀스명].nextval로 지정해줍니다.
-- 실습, 게시판 id value에 nextval로 seq 삽입
INSERT
INTO
board(
id,
boardWriter,
boardPass,
boardTitle,
boardContents,
boardCreatedTime,
boardHits,
fileAttached
)
VALUES(
board_id_seq.nextval,
'test1',
'1234',
'test1',
'첫 번째 게시물입니다.',
sysdate,
0,
0
);
시퀀스 주의점
- 시퀀스를 실행할 때마다 값이 증가하며 증가된 값은 다시 내릴 수 없다.
- [시퀀스명].currval 을 사용해 현재 시퀀스 순번을 가져올 수 있다. (순번 증가x)
시퀀스 수정
-- 시퀀스 증가 값을 2로 변경
ALTER SEQUENCE board_id_seq INCREMENT BY 2;
-- 시퀀스 최대값을 9999 > 99999 로 변경
ALTER SEQUENCE board_id_seq MAXVALUE 99999;
시퀀스 삭제
DROP SEQUENCE board_id_seq;
반응형