시퀀스(Sequence)란?
시퀀스란 자동으로 순차적으로 증가하는 순번을 반환하는 데이터베이스 객체입니다. 보통 PK값에 중복값을 방지하기위해 사용합니다. 예를들어 게시판에 글이 하나 추가될때마다 글번호(PK)가 생겨야 한다고 해보겠습니다. 만약 100번까지 글 번호가 생성되어있다면 그 다음 글이 추가가 되었을 경우 글 번호가 101으로 하나의 ROW를 생성해주어야 할것입니다. 이때 101이라는 숫자를 얻으려면 기존 글번호중 가장 큰 값에 +1을 하는 로직을 어딘가에 넣어야하는데 시퀀스를 사용하면 이러한 로직이 필요없이 데이터베이스에 ROW가 추가될때마다 자동으로 +1을 시켜주어 매우 편리합니다.
출처 https://coding-factory.tistory.com/420
시퀀스(Sequence) 사용법
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 설정시 시퀀스값을 메로리에 할당하지 않음
ex)
CREATE SEQUENCE SEQ_MEMBER_ID
START WITH 1
INCREMENT BY 1
MAXVALUE 5000
MINVALUE 1
NOCYCLE
CACHE 20;
테이블 생성 (Sequence) 사용법 예시 2개
CREATE TABLE T_SHOPPING_MEMBER(
MEMBER_ID VARCHAR2(20),
MEMBER_PW VARCHAR2(1000),
MEMBER_NAME VARCHAR2(50),
REG_DATE DATE
CONSTRAINT MEMBER_PK_MEMBER_ID PRIMARY KEY (MEMBER_ID)
);
CREATE TABLE T_GOODS_MYBAG(
BAG_GOODS_ID NUMBER(20),
MEMBER_ID VARCHAR2(50),
BAG_GOODS_TITLE VARCHAR2(50),
BAG_GOODS_WRITER VARCHAR2(50),
BAG_GOODS_PRICE NUMBER(10),
BAG_GOODS_PUBLISHER VARCHAR2(50),
BAG_GOODS_SORT VARCHAR2(50),
BAG_GOODS_QTY NUMBER(20),
BAG_GOODS_TOTALPRICE NUMBER(20),
BAG_GOODS_TOTALQTY NUMBER(20),
CONSTRAINT GOODS_PK_BAG_GOODS_ID PRIMARY KEY (BAG_GOODS_ID),
CONSTRAINT MYBAG_FK_MEMBER_ID FOREIGN KEY (MEMBER_ID)
REFERENCES T_SHOPPING_MEMBER (MEMBER_ID)
);
'데이터베이스 > 오라클(Oracle)' 카테고리의 다른 글
[오라클/Oracle] 오라클 디벨로퍼 새접속 계정 만들기 (0) | 2021.09.26 |
---|