본문 바로가기

나는개발자다!!/DB

오라클썰 시퀀스(Sequence)

Sequence: 시퀀스

 - 영화, 텔레비전에서 몇개의 장면이 모여 하나의 삽화를 이룬것. 연속된 하나의 장면 설정 (촬영술)

 - 학습 간원의 배열

 - 수열, 수 또는 다른 대상의 순서있는 나열

 - 카드 놀이에서 연속된 3매 이상의 같은 종류의 카드



위의 내용처럼 시퀀스란 연속된 수의 나열을 뜻하는 용어로 1, 2, 3, 4, 5 이런식으로 순차적으로 증가되는 값을 뜻한다.

Table의 구조 설계 시 보통PK 값으로 이용하기 위하여 많이 사용한다.

(pk란 primary key의 약자로 다른 썰에서 기술하겠습니다. 쉽게 말하면 주민등록번호처럼 유일성을 보장하는 값이다.)


오라클에서도 시퀀스를 지원해줍니다. 오라클에서 시퀀스를 생성하는 구문은 다음과 같습니다.

CREATE SEQUENCE sequence_name
    [START WITH n]
    [INCREMENT BY n]
    [MAXVALUE n | NOMAXVALUE]
    [MINVALUE n | NOMINVALUE]
    [CYCLE | NOCYCLE]
    [CACHE | NOCACHE]



이외에 참고할 만한 유용한 구문으로는 

======================유저 생성 시퀀스 보기====================== 

SELECT * FROM USER_SEQUENCES;

======================유저 생성 시퀀스 보기======================

 

 

======================시퀀스 명령어======================

num_seq : 시퀀스명

currval : 현재 시퀀스 값을 반환

nextval : 현재 시퀀스값의 다음 값을 반환

======================시퀀스 명령어======================

 


 

 

======================시퀀스 초기화 프로시저======================

CREATE OR REPLACE PROCEDURE SEQUENCE_RESET ( S_NAME  IN VARCHAR2 )
AS S_VALUE INTEGER;
BEGIN 
    EXECUTE IMMEDIATE 'ALTER SEQUENCE ' || S_NAME ||' MINVALUE 0';
    EXECUTE IMMEDIATE 'SELECT ' || S_NAME ||'.NEXTVAL FROM DUAL' INTO S_VALUE;
    EXECUTE IMMEDIATE 'ALTER SEQUENCE ' || S_NAME ||' INCREMENT BY -'||S_VALUE;
    EXECUTE IMMEDIATE 'SELECT ' || S_NAME ||'.NEXTVAL FROM DUAL' INTO S_VALUE;
    EXECUTE IMMEDIATE 'ALTER SEQUENCE ' || S_NAME ||' INCREMENT BY 1'; 
END ;

 

 

 

EXEC SEQUENCE_RESET ('[테이블명]') 

======================시퀀스 초기화 프로시저======================