본문 바로가기
카테고리 없음

오라클 시퀀스 SEQUENCE 생성

by cook_code 2023. 6. 25.

 

시퀀스란? 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;
반응형