Oracle Sequence란?

박현우·2024년 1월 19일
0

1. 시퀀스(Sequence)
1-1. 시퀀스란?

  • 연속적인 번호를 만들어주는 기능
  • 시퀀스란 자동으로 순차적으로 증가하는 순번을 반환하는 데이터베이스 객체다.
  • 보통 PK값의 중복을 방지하기 위해 사용한다. 예를 들어 게시판에 글이 하나 추가될 때마다 글 번호(PK)가 생겨야 한다고 생각해보자. 만약 100번까지 글 번호가 생성되어 있다면 그 다음 글이 추가가 되었을 경우 글 번호가 101로 하나의 row를 생성해 주어야 한다. 이 때, 101이라는 숫자를 얻을려면 기존 글 번호 중 가장 큰 값에 +1을 하는 로직을 어딘가에 넣어야 한다. 하지만 시퀀스를 사용하면 이러한 로직이 필요없이 데이터베이스에 row가 추가될 때마다 자동으로 +1을 시켜주어 매우 편리하다.

2-2. 시퀀스 생성

  • start with n : 초기값
  • increment by n : 증가값
  • maxvalue n
    nomaxvalue : 최대값 선택 또는 무한대값
  • minvalue n
    nominvalue : 최소값 선택 또는 무한대값
  • cycle
    nocycle : maxvalue에 도달했을 때 다시 minvalue부터 시작하게 된다.
  • cache : 예를 들어 우리가 1000개의 레코들를 삽입. 캐시를 20으로 두면 Oracle date dictionary에 50번 접근해야 하지만 200으로 해둔다면 5번이면 된다.

-- SEQUENCE 시퀀스

CREATE SEQUENCE seq_serial_no
INCREMENT BY 1
	START WITH 100
MAXVALUE 110
MINVALUE 99
CYCLE 
cache 2;

CREATE TABLE goods(
	good_no  number(3),
		good_name varchar2(10)
);

-- nextval: 다음 값을 출력하는 시퀀스의 펑션

INSERT INTO GOODS g 
VALUES (seq_serial_no.nextval, '제품1')
;

SELECT * FROM GOODS g 
;

-- 현재 시퀀스 값이 어디까지 증가가됐는지 궁금할 때 : 시퀀스이름.currval

INSERT INTO GOODS g 
VALUES (seq_serial_no.currval, '제품2')
;

-- 혹은

SELECT seq_serial_no.currval FROM dual;

-- 시퀀스 삭제. 더이상 사용할 수 없게 된다.

DROP SEQUENCE seq_serial_no;

0개의 댓글

관련 채용 정보