데이터베이스 - 시퀸스 객체

시퀸스

데이터 베이스 객체에는 테이블과 뷰를 제외하고 시퀸스, 인덱스, 동의어가 존재한다. 테이블과 뷰에 대해서는 앞에서 학습하였기 때문에 나머지 3 종류의 객체에 대해서 살펴보도록 하겠다.

시퀸스는 은행에서 대기표를 뽑을 때 사용하는 일종의 번호발생기라고 생각하면 된다. 여러 사용자들이 공유하는 데이터베이스 객체로서 호출 시 중복되지 않는 숫자를 리턴한다. 시퀸스는 중복되지 않는 값이기 때문에 주로 primary key를 생성할 때 시퀸스 값을 이용한다.

시퀸스 생성

시퀸스 생성 명령은 다음과 같다. 일단 create문을 통해 sequence 이름을 입력하고, 숫자를 얼마씩 증가시킬지, 시퀸스 초기값, 최대값 등을 설정한다.

  • cycle 옵션

nocycle은 시퀸스가 한바퀴 돌았을 때 다시 반복하도록 하는가에 대한 속성값이다. 만약에 cycle로 선언하여 반복을 허용할 경우에는 primary 키로 사용해서는 안된다.

  • cache 옵션

시퀸스 번호의 추출을 빠르게 진행할 수 있도록 하는 옵션이다. nextval(아래에서 다룰 것)에 의해 최초로 시퀸스 번호를 추출하면 cache 옵션에 기술된 숫자 만큼 시퀸스 번호가 추출되고 캐시에 저장된다. nextval에 의해 다음 시퀸스 번호가 호출될 때 캐시에서 이 번호들을 리턴한다.

user_sequences

시퀸스 역시 데이터 딕셔너리가 존재한다. 이를 user_sequences라고 하는데, 아래와 같은 데이터들을 담고 있다.


이 중 몇가지를 검색하도록 해보자. 시퀸스의 이름과 초기값, 최대값, 증분을 검색하였다. 우리가 시퀸스 생성 시 설정한대로 잘 출력되고 있다.

nextval, currval 가상 칼럼

시퀸스를 작성한 후 nextval, currval 라는 가상 칼럼을 사용하여 시퀸스 번호를 검색할 수 있다. nextval는 다음 시퀸스 번호를 출력하고, currval는 현재 시퀸스 번호를 출력한다.

일단 currval를 출력하기에 앞서 초기값을 불러오기 위해서 먼저 nextval 칼럼을 호출해야 한다. 시퀸스를 시작시켜야 현재 시퀸스 번호값이 생길 수 있기 때문이다.

시퀸스의 사용

앞서서 시퀸스가 중복되지 않는 특성을 이용하여 primary key로 많이 사용한다고 언급했었다. 어떻게 사용하는지 간단하게 보고 넘어가자.
행 데이터를 추가할 때 이렇게 primary key부분에 시퀸스 객체를 집어넣는다. 그리고 우리가 위에서 봤었던 nextval 칼럼을 호출하도록 하여 시퀸스 번호가 계속해서 넘어갈 수 있도록 하여 primary key로 입력한다.

시퀸스 변경

우리가 생성한 시퀸스는 cycle을 허용하지 않으며 100을 최대값으로 갖는다. 이를 변경시켜보도록 하겠다. 이를 위해서 alter문을 사용한다.


이제 시퀸스 설정이 변경되었다. 제대로 변경이 되었는지 가상칼럼을 사용하여 확인해보도록 하자.

130까지 시퀸스 번호가 출력되고 있으며, 130까지 한바퀴가 돌고 난 후에 다시 1로 돌아가고 있다. 이를 통해서 수정이 제대로 이루어졌음을 확인하였다.

시퀸스 삭제

이번에는 우리가 생성한 시퀸스에 대해서 삭제해보겠다. 시퀸스를 삭제하기 위해서는 일단 시퀸스의 소유자이거나 drop any sequence 권한을 관리자로부터 부여 받아야 한다. 이는 시퀸스 객체를 여러 사용자가 함께 사용하기 때문이다.


삭제가 정상적으로 이루어지고 있다.

댓글

이 블로그의 인기 게시물

데이터베이스 PL/SQL - 배열과 테이블

데이터베이스 PL/SQL 변수선언

데이터베이스 PL/SQL 제어문 - 반복문