시퀀스, SEQUENCE
● 자동적으로 고유한 (유일) 번호를 생성한다.
● 공유 가능한 객체이고, 주로 기본 키 값을 생성하기 위해 사용한다.
→ 데이터베이스 객체 보통 PK값에 중복값을 방지하기 위해 사
● 어플리케이션 코드를 대체하고, 메모리 캐쉬(Cache)가 되면 시퀀스 값을 액세스 하는 효율성을 향상시킨다.
● CREATE SEQUENCE 시스템 권한이 있어야 사용 가능하다.
※ 캐쉬 (Cache) : 시퀀스를 빨리 제공하기 위해서 미리 메모리에 CACHE 수량 만큼의 시퀀스를 만들어서 준비
※ 사이클(CYCLE) : 최대값에 도달 했을 때 다시 최소값 부터 시작함.
ⓛ 시퀀스는 테이블의 행에 대한 시퀀스 번호를 자동적으로 생성하기 위해 사용될 수 있다.
② 시퀀스는 사용자가 생성한 데이터베이스 객체이며 여러 사용자가 공유가능하다.
③ 시퀀스의 가장 일반적이고 전형적인 사용은 각 행을 유일하게 구분하는 기본 키 값을 생성하기 위해서이다.
④ 시퀀스 번호는 테이블과 관계없이 생성되고 저장된다.
▶ 동일한 시퀀스는 여러 테이블에 대해 사용될 수 있다.
- INCREMENT BY : 시퀀스 실행시 증가시킬 값
- START WITH : 시퀀스의 시작 값 ( ※ MIN_VALUE와 같거나 커야함 )
- MIN_VALUE : 시퀀스가 시작되는 최솟값
- MAX_VALUE : 시퀀스가 끝나는 최댓값
- NOCYCLE | CYCLE
- NOCYCLE : 반복 하지 않음
- CYCLE : 시퀀스의 최댓값에 도달시 최솟값 1부터 다시 시작
- NOCACHE | CACHE
- NOCACHE : 캐시를 사용하지 않음
- CACHE : 캐시를 사용하여 미리 값을 할당해 놓아 속도가 빠르며, 동시 사용자가 많을 경우 유리
- NOORDER | ORDER
- NOORDER : 순서값 생성 하지 않음
- ORDER : 요청 순서로 값을 생성하여 발생 순서를 보장하지만 조금의 시스템 부하가 존재
시퀀스 확인
SELECT * FROM USER_SEQUENCES;
NEXTVAL
다음 사용 가능한 시퀀스 리턴한다.
● 시퀀스가 참조될 때마다 다른 사용자에게 조차도 유일한 값을 반환한다.
CURRVAL
현재 시퀀스 값을 리턴한다.
● CURRVAL이 참조되기 전에 NEXTVAL이 먼저 이용되어야 한다.
시퀀스 생성
CREATE SEQUENCE DEPTS_SEQ
INCREMENT BY 1
START WITH 1
MAXVALUE 10
NOCACHE
NOCYCLE;
NEXTVAL 확인
SELECT DEPTS_SEQ.NEXTVAL FROM DUAL;
CURRVAL 확인
▶ 반드시 NEXTVAL 확인 이후에만 확인 가능
▶ 한 번 NEXTVAL가 실행되면, 복구는 불가
SELECT DEPTS_SEQ.CURRVAL FROM DUAL;
시퀀스를 이용해 테이블 생성
CREATE TABLE DEPTS(
DEPT_NO NUMBER(2) CONSTRAINT DEPTS_NO_PK PRIMARY KEY,
DEPT_NAME VARCHAR2(30),
DEPT_DATE DATE
);
INSERT INTO DEPTS VALUES (DEPTS_SEQ.NEXTVAL, 'TEST', SYSDATE);
- NEXTVAL의 특성을 이용하여, 값을 삽입할 수 있다.
시퀀스 수정
위 시퀀스(Sequence)의 최댓값(MAX_VALUE)는 10이다.
시퀀스에 대해 MAXVALUE 한계에 도달한다면, 더 이상 시퀀스 값을 할당 받을 수 없을 것이고,
MAXVALUE를 초과하는 시퀀스를 나타내는 에러를 받을 것이다.
▶ 이를 위한 해결 방법으로는 시퀀스를 계속 사용하기 위해 ALTER SEQUENCE 문장을 사용한다.
ALTER SEQUENCE DEPTS_SEQ MAXVALUE 9999;
728x90
'Programming > Database' 카테고리의 다른 글
[Database] 권한 ( Privilege ) (0) | 2023.12.13 |
---|---|
[Database] INDEX (0) | 2023.12.13 |
[Database] 뷰, VIEW (0) | 2023.12.12 |
[Database] 제약조건 (1) | 2023.12.12 |
[Database] Table, 테이블 (1) | 2023.12.11 |