오라클에서는 행을 구분하기 위한 기본 키를 두고 있다. 기본 키는 항상 유일한 값을 가져야 한다.
하지만 이를 사용자가 직접 생성하려면 부담이 크다.
시퀀스는 테이블 내의 유일한 숫자를 자동으로 생성하는 자동 번호 발생기이므로 시퀀스를 기본 키로 사용함으로써 사용자의 부담을 줄일 수 있다.
마치 for문 처럼 증가하며 테이블에 저장된다.
start with
- 시쿼스 번호의 시작값을 지정할 때 사용된다.
incresement by
- 연속적인 시퀀스 번호의 증가치를 지정할 때 사용된다.
시작값이 10이고 10씩 증가하는 시퀀스 dept_deptno_seq를 생성한다.
create sequence dept_deptno_seq
increment by 10
start with 10;
내가 만들어 놓은 시퀀스 확인
select sequence_name, min_value, max_value,
increment_by, cycle_flag
from user_sequences;
결과
currval : 현재 값을 반환한다.
nextval : 현재 시퀀스값의 다음 값을 반환한다.
currval에 새로운 값이 할당되기 위해서는 nextval로 새로운 값을 생성해야 한다.
(nextval로 새로운 값ㅇ르 생성한 다음에 이 값을 currvaldp 대체하게 된다.)
사용법
select dept_deptno_seq.nextval from dual;
--시퀀스의 다음 값 생성
select dept_deptno_seq.currval from dual;
--생성된 시퀀스 값을 현재 값으로 설정
시퀀스 사용 예제
create table dept_example(
deptno number(4) primary key,
dname varchar2(15),
loc varchar2(15)
);
create sequence dept_example_seq
start with 10
increment by 10
maxvalue 1000000;
insert into dept_example
values (dept_example_seq.nextval, '경리부', '서울');
insert into dept_example
values (dept_example_seq.nextval, '인사부', '인천');
insert into dept_example
values (dept_example_seq.nextval, '영업부', '용인');
insert into dept_example
values (dept_example_seq.nextval, '전산부', '수원');
select * from dept_example;
결과
시퀀스 수정
시퀀스의 순서가 이상하게 들어갔을 때 시퀀스 증가값을 변경함으로써 해결
ex) 30애서 1로 가고싶으면 증가값을 -29로 변경, 이후 다시 1로 변경
'수업 내용 > [DB] 오라클' 카테고리의 다른 글
[DB 오라클] 16. 권한 (0) | 2023.04.27 |
---|---|
[DB 오라클] 15. 인덱스 (INDEX) (0) | 2023.04.27 |
[DB 오라클] 13. 뷰 ( view) (0) | 2023.04.27 |
12. 제약조건 (0) | 2023.04.25 |
11. 트랜잭션 (transaction) (0) | 2023.04.25 |