데이터베이스

시퀸스

야생늑대 2022. 4. 21. 13:02
반응형

시퀸스란?

  • 오라클 DB에서 특정 규칙에 맞는 연속 숫자를 생성하기 위해 사용하는 객체이다.
  • 중복되지않는 UNIQUE 값을 생성해 준다.
  • 단순히 번호 생성을 위한 객체이지만 지속적이고 효율적인 번호 생성이 가능해서 자주 사용하는 객체이다.
  • PRIMARY KEY(기본키) 값과 같이 순차적으로 증가하는 컬럼을 자동적으로 생성할 수 있다.
  • 테이블과는 독립적으로 저장되고 생성된다.

▶ 단지 연속하는 새로운 번호를 만드는 일이라면 다음과 같이 MAX 함수에 1을 더한 값을 사용해도 상관없을 것이다.

SELECT MAX(글번호) + 1
	FROM 게시판 테이블

※ 이 방식은 실제로 연속하는 숫자로 이루어진 웹서비스의 새로운 게시판 번호나 상품 주문 번호 등을 생성할 때 종종 생성하는 방식이다. 하지만 테이블 데이터가 많아 질수록 가장 큰 데이터를 찾고 새로운 번호를 계산하는 시간이 함께 늘어나므로 아쉬운 부분이 있다. 또한 동시에 여러 곳에서 새로운 번호를 요구했을 경우에 SELECT문의 결과 값이 같게 나와 번호가 중복될 수도 있다.

 


시퀸스 생성 방식

번호 설명
1 생성할 시퀸스 이름 지정. 아래 절(2~7)들을 지정하지 않을 경우 1부터 시작하여 1만큼 계속 증가하는 시퀸스 생성 (필수)
2 시퀸스에서 생성할 번호의 증가 값(기본 값은 1) (선택)
3 시퀸스에서 생성할 번호의 시작 값(기본값은 1) (선택)
4 시퀸스에서 생성할 번호의 최댓값 지정, 최댓값은 시작값(START WITH) 이상, 최솟값( MINVALUE)을 초과하는 값을 지정. NOMAXVALUE로 지정하였을 경우 오름차순이면 10의 27승, 내림차순일 경우-1 로 설정 (선택)
5 시퀸스에서 생성할 번호가 최솟값 지정, 최솟값은 시작값 이하, 최댓값 미만 값으로 지정, NOMINVALUE로 지정하였을 경우  오름차순이면 1, 내림차순이면 -10의26승으로 설정  (선택)
6 시퀸스에서 생성한 번호가 최댓값(MAXVALUE)에 도달했을 경우 CYCLE이면 시작 값에서 다시 시작, NOCYCLE이면 번호 생성이 중단되고, 추가 번호 생성을 요청하면 오류 발생(선택)
7 시퀸스가 생성할 번호를 메모리에 미리 할당해 놓을 수를 지정, NOCACHE는 미리 생성하지 않도록 설정,
옵션을 모두 생략하면 기본값은 20 (선택)

시퀸스 수정

※ 시작 값은 변경할 수 없다.


시퀸스를 사용한 INSERT문 실행

시퀸스 사용

  • 시퀸스이름.NEXTVAL 다음 번호를 생성한다.
  • 시퀸스이름.CURRVAL 마지막으로 생성한 번호를 추가 생성한다.
  • CYCLE옵션을 지정하면 시퀸스가 최댓값까지갔을때 INSERT문을 사용하면 시퀸스가 최솟값부터 다시 생성된다.

 


시퀸스삭제

  •  
  • 시퀸스는 DDL(데이터 정의어) 이므로 CREATE, INSERT, ALTER, DROP 를 사용한다.
  •  DDL은 자동 COMMIT 되니 작업을 할 때는 주의한다.
  • 시퀸스 삭제를 하여도 시퀸스를 사용하여 추가된 데이터는 삭제되지않는다.

 

 

 

반응형

'데이터베이스' 카테고리의 다른 글

오라클 함수- 내장 함수 : 단일행 함수  (0) 2022.04.21
동의어 SYNONYM  (0) 2022.04.21
제약조건 - UNIQUE  (0) 2022.04.20
제약조건 - FOREIGN KEY와 CHECK,DEFAULT  (0) 2022.04.20
제약조건 - PRIMARY KEY  (0) 2022.04.20