시퀀스는 테이블 내의 유일한 숫자를 자동으로 생성하는 자동 번호 발생기이므로
시퀀스를 기본 키로 사용하게 되면 사용자의 부담을 줄일 수 있다.
-- Sequence : 숫자 자동 생성기
-- 시작값, 증가값, 최대값, 최소값, 반환 여부.
-- dept 테이블의 deptno가 pk로 되어있다. [deptno = 10, 20, 30..]
-- detpno에 사용할 시퀀스를 생성해보자.
------------ 시퀀스 삭제 : drop sequence 시퀀스이름
drop sequence seq_dept_deptno;
-- 시퀀스 생성
create sequence seq_dept_deptno
MINVALUE 10 -- 최소값 10
MAXVALUE 90
start with 10 -- 10부터 시작
INCREMENT BY 10 -- 10씩 증가
;
-- emp 테이블에 사용할 수 있는 시퀀스 만들어보기
create sequence sqe_emp_empno
MINVALUE 0
start with 0
increment by 1
CURRVAL / NEXTVAL
-- sequence 객체로 숫자를 생성, 현재 숫자를 읽어오는 명령
-- 숫자생성 : nextval > 새로운 숫자를 생성하고 숫자를 반환
-- currval: 현재 숫자 반환
-- 현재 숫자를 확인
select seq_dept_deptno.nextval
from dual;
-- 현재 숫자
select seq_dept_deptno.currval
from dual;
insert into dept01 values (seq_dept_deptno.nextval , 'test', 'test');
-- 계속하면 (90이넘으면 / 현재 maxvalue 90임)
-- ORA-08004: 시퀀스 SEQ_DEPT_DEPTNO.NEXTVAL exceeds MAXVALUE은 사례로 될 수 없습니다.
select * from dept01;
'DB > Oracle SQL' 카테고리의 다른 글
[ORACLE SQL] 인덱스 (0) | 2020.11.13 |
---|---|
[ORACLE SQL] 가상테이블 / 뷰(view) & 로우넘(rownum) (0) | 2020.11.13 |
[ORACLE SQL] 트랜잭션 (0) | 2020.11.13 |
[ORACLE SQL] DML / INSERT / UPDATE (0) | 2020.11.12 |
[ORACLE SQL] DDL_무결성 제약조건 (0) | 2020.11.12 |
[ORACLE SQL] DDL _ALTER TABLE / 테이블 칼럼 추가/변경/삭제 (0) | 2020.11.12 |
[ORACLE SQL] DDL _ CREATE TABLE / 테이블 생성 (0) | 2020.11.12 |