시퀀스

  • 테이블 내의 컬럼 중에 primary key를 지정하기 애매한 경우 1부터 1씩 증가되는 값을 저장하는 컬럼을 추가하여 사용하는 경우가 있다.
  • 이 때, 1부터 1씩 증가되는 값을 구하기 위해 시퀀스를 사용한다.
  • create sequence 시퀀스이름
    start with 숫자
    increment by 숫자
    maxvalue 숫자 or nomaxvalue
    minvalue 숫자 or nominvalue
    cycle or nocycle
    cache 숫자 or nocache
  • start with 숫자 : 시작 값. 시작 값은 절대 최소 값보다 작을 수 없다.
  • increment by : 증가값
  • maxvalue : 시퀀스가 가질 수 있는 최대 값.
    생략하거나 nomaxvalue일 경우 10의 27승.
  • minvalue : 시퀀스가 가질 수 있는 최소 값
    생략하거나 nominvalue일 경우 1.
    cycle : 최대 혹은 최소값까지 갈 경우 순환한다.
    cache : 시퀀스를 메모리상에서 관리할 수 있도록 설정한다.
    메모리 상에서 관리를 하게 되면 속도가 빨라질 수 있다.

ex)

create table test_table1(
idx number constraint TEST_TABLE1_IDX_PK primary key,
number_data number not null
);

create sequence test_seq1
start with 0
increment by 1
minvalue 0;

select test_seq1.currval from dual;

insert into test_table1(idx, number_data)
values (test_seq1.nextval, 100);

insert into test_table1(idx, number_data)
values (test_seq1.nextval, 200);

select * from test_table1;

select test_seq1.currval from dual;

drop sequence test_seq1;