본문 바로가기
DB

오라클 - 시퀀스(SEQUENCE) 생성, 수정, 삭제

by 스노위13 2022. 5. 26.

시퀀스 객체 SEQUENCE
자동 순번을 반환하는 객체로 (CURRVAL, NEXTVAL)사용하여 값을 확인하거나 값을 늘린다. NO CYCLE을 하면 값이 중복되지 않기 때문에 키값이 없는 테이블에 키값을 부여할 때 많이 사용한다.

1. 생성 방법 : CREATE SEQUENCE 시퀀스_이름

1
2
3
4
5
6
7
CREATE SEQUENCE 시퀀스이름
INCREMENT BY 1     -- 커지는 숫자 크기 
START WITH   1     -- 시작 숫자
MINVALUE     1     -- 최소값
MAXVALUE     99999 --최대값 
NOCYCLE            -- 디폴트 NOCYCLE 최대, 최소 도달시 중지
NOCACHE ;          -- 디폴트 NOCACEH 메모리에 값 미리 할당 여부  
cs

위의 방법에 따라 SEQ라는 이름의 시퀀스를 선언해 보았다. 시퀀스는 자바에서 게시글 숫자를 넣을 때도 활용하기에 좋다. 

1
2
3
4
5
CREATE SEQUENCE my_seq
INCREMENT BY 1   
START WITH   1    
MINVALUE     1    
MAXVALUE     9999 ; 
cs

반대로 값이 감소하는 시퀀스를 만들 수도 있다.

1
2
3
4
5
6
7
8
CREATE SEQUENCE my_seq2
INCREMENT BY -1
START WITH 1000
MINVALUE 1
MAXVALUE 1000
NOCYCLE
NOCACHE;
cs

 

2. 값 확인, 값 증가 시키기 : .currval 과 .nextval
SELECT 시퀀스이름.CURRVAL 을 하면 현재 값을 확인할 수 있고 SELECT 시퀀스이름.NEXTVAL 을 하면 실행할 때마다 값을 증가시킬 수 있다. NEXTVAL을 실행할 때는 INCREMENT BY에서 커지는 숫자 크기를 입력했다면 그만큼 커지고 입력하지 않았다면 디폴트값인 1씩 커진다.  

1
2
3
SELECT my_seq.nextval     -- 값 증가(실행할 때 마다 값이 증가한다. )
       , my_seq.currval    -- 현재 값을 확인할 때 사용
FROM dual;  
cs

 

3. 수정하기 : ALTER SEQUENCE 시퀀스_이름 수정하려는_내용

1
2
ALTER SEQUENCE my_seq INCREMENT BY 2  --증가값을 2로 수정
ALTER SEQUENCE my_seq MAXVALUE 99999  --최대값을 수정
cs

 

4.삭제 : DROP SEQUENCE 시퀀스_이름;

1
DROP SEQUENCE my_seq;
cs

 

댓글