시퀀스(Sequence)란?
오라클 시퀀스(Sequecne)란 기본 키 값을 자동으로 생성할 수 있는 데이터베이스 오브젝트입니다.
CREATE SEQUECNE 문을 사용해서 여러 사용자가 고유한 정수를 사용할 수 있게 도와줍니다.
시퀀스의 특이한 점은 사용자의 커밋과 롤백에 상관없이 시퀀스가 증가한다는 것입니다.
즉, 두 명의 사용자가 동시에 시퀀스를 증가시키면 두 명의 사용자는 다른 값의 시퀀스를 얻게 됩니다.
시퀀스를 사용하는 이유?
데이터베이스에서 테이블을 생성하고 데이터를 저장할 때, 이 테이블의 값을 구별하기 위한 고유한 식별번호를
PK로 지정하는 경우가 보통입니다. PK 값은 중복이 없는 고유한 번호를 반드시 지정해야 하며 이때 시퀀스를
활용하여 고유한 정수를 만들 수 있습니다. 예를들어 a = a+1라는 로직을 구문에 넣지 않고 간편하게 시퀀스의
시퀀스. nextval를 활용하여 만듦으로써 편의성과 정확성을 향상할 수 있습니다.
시퀀스 Syntax
CREATE SEQUENCE [ schema. ] sequence
[ { INCREMENT BY | START WITH } integer
| { MAXVALUE integer | NOMAXVALUE }
| { MINVALUE integer | NOMINVALUE }
| { CYCLE | NOCYCLE }
| { CACHE integer | NOCACHE }
| { ORDER | NOORDER }
]...
CREATE SEQUENCE 시퀀스명
INCREMENT BY 증가 또는 감소하는 값
START WITH 시작값
MINVALUE 최소값
MAXVALUE 최대값
CYCLE OR NOCYCLE -- CYCLE 일 경우 MAXVALUE를 초과하게 되면 MINVALUE 부터 다시 시작
CACHE OR NOCACHE 숫자 -- CACHE 일 경우 메모리에 캐싱
ORDER OR NOORDER -- 시퀀스를 순차적으로 증가또는 감소하여 생성
시퀀스 작성 예시
CREATE SEQUENCE sequence_test
START WITH 1000
INCREMENT BY 1
MINVALUE 1
MAXVALUE 999999
NOCACHE
NOCYCLE;
출처 : https://docs.oracle.com/cd/B28359_01/server.111/b28286/statements_6015.htm#SQLRF01314
'Oracle' 카테고리의 다른 글
NULL과 NULL을 처리하기 위한 NVL, NULLIF (0) | 2020.07.29 |
---|---|
다른 테이블을 참조하여 UPDATE 하는 방법 (0) | 2020.07.11 |
서브쿼리의 종류와 WITH 쿼리 (0) | 2020.06.30 |
상위 N개 레코드 조회하기 (0) | 2020.05.24 |
CHAR, VARCHAR, VARCHAR2 차이점 (2) | 2020.03.25 |