시퀸스란,
자동으로 순차적으로 증가하는 순번을 반환하는 데이터베이스 객체이다.
보통 PK값에 중복값을 방지하기위해 사용한다.
예를들어 게시판에 글이 하나 추가될때마다 글번호(PK)가 생겨야할때,
기존 글번호 중 가장 큰값에 1을 하는 로직을 넣어야하는데, 시퀸스를 사용하면 로직이 필요없이 DB에 글이 하나씩 생성될때마다 자동으로 +1을 시켜주어 매우 편리하다.
--문법
CREATE SEQUENCE [시퀀스명]
INCREMENT BY [증감숫자] --증감숫자가 양수면 증가 음수면 감소 디폴트는 1
START WITH [시작숫자] -- 시작숫자의 디폴트값은 증가일때 MINVALUE 감소일때 MAXVALUE
NOMINVALUE OR MINVALUE [최솟값] -- NOMINVALUE : 디폴트값 설정, 증가일때 1, 감소일때 -1028 -- MINVALUE : 최소값 설정, 시작숫자와 작거나 같아야하고 MAXVALUE보다 작아야함
NOMAXVALUE OR MAXVALUE [최대값] -- NOMAXVALUE : 디폴트값 설정, 증가일때 1027, 감소일때 -1 -- MAXVALUE : 최대값 설정, 시작숫자와 같거나 커야하고 MINVALUE보다 커야함
CYCLE OR NOCYCLE --CYCLE 설정시 최대값에 도달하면 최소값부터 다시 시작 NOCYCLE 설정시 최대값 생성 시 시퀀스 생성중지
CACHE OR NOCACHE --CACHE 설정시 메모리에 시퀀스 값을 미리 할당하고 NOCACHE 설정시 시퀀스값을 메로리에 할당하지 않음
create sequence EX START WITH 1 MINVALUE 0;
게시판 테이블을 만든후 이렇게 시퀸스를 생성해주면 게시글을 생성할때마다 BNO가 1씩 늘어난다.
*BNO(게시글 고유번호, PK)
INSERT INTO [테이블명](
BNO,
CONTENT,
WRITER,)
VALUES(
EX_SEQ.NEXTVAL
,#{content}
,#{writer})
조회
SELECT EX_SEQ.CURRVAL FROM DUAL --해당 시퀀스 값 조회
SELECT * FROM USER_SEQUENCES --전체 시퀀스 조회
수정
ALTER SEQUENCE [시퀀스명]
INCREMENT BY [증가값]
NOMINVALUE OR MINVALUE [최솟값]
NOMAXVALUE OR MAXVALUE [최대값]
CYCLE OR NOCYCLE [사이클 설정 여부]
CACHE OR NOCACHE [캐시 설정 여부]
삭제
DROP SEQUENCE [시퀀스명]
'DB > ORACLE' 카테고리의 다른 글
[오라클]CASCADE 제약조건 추가하기 (0) | 2021.09.06 |
---|---|
페이징- 서브쿼리,ROW-NUMBER()를 이용한 쿼리작성 (0) | 2021.07.29 |
오라클 계정만들기,sid 확인 (0) | 2021.07.26 |
ORA-12514, TNS:listener does not currently know of service requested in connect descriptor 오류해결 (0) | 2021.07.12 |