시퀀스, Sequence
- 시퀀스 객체
- DB Object 중 하나
- DB 개발자에게 식별자들을 관리하기 편하도록 기능 제공
- 시퀀스의 역할은 중복되지 않은 유일한 숫자를 반환하는데 있다. 중간에 건너뛰는 숫자에 연연해 하지 말것(*****).
- 절대로 중간에 비어있는 숫자가 존재 않아야 한다면 시퀀스 객체를 사용하지 말것 -> 직접 개발자가 관리할 것
시퀀스 객체 사용하기
1. create : 생성
2. alter : 수정
3. drop : 삭제
시퀀스 객체 생성하기
- create sequence 시퀀스명;
- create sequence 테이블명;
시퀀스 객체 사용하기
1. testSeq.nextval : 1 증가된 다음 일련번호 반환(Queue.poll())
2. testSeq.currval : 증가 시키지 않은 현재 일련 번호 반환(Queue.peek())
create sequence testSeq;
--시퀀스 객체는 특정 테이블에 종속적이지 않다.(주로 테이블과 연관지어 사용은 한다.)
select testSeq.nextval from dual; +1씩 증가
select testSeq.currval from dual; 현재 숫자 출력
ex)메모장
create table memo
(
seq number primary key,
name varchar2(20) not null,
memo varchar2(1000) not null
);
insert into memo(seq,name,memo) values(1,'홍길동','메모입니다.');
insert into memo(seq,name,memo) values(testSeq.nextval,'홍길동','메모입니다.');
-------------------------------------------------------------------------------------------
ex)테이블의 식별자
1. 숫자
2. 문자열
상품테이블
- 상품코드,상품명,가격,수량
- 상품코드(PK) -> '1','2','3','4'
create table tblProduct
(
code varchar2(5) primary key, --상품코드
name varchar2(100) not null, -- 상품명
price number not null, -- 가격
qty number not null --수량
);
create sequence productSeq; --시퀀스 객체 생성
--시퀀스 객체는 일련번호를 초기화할 수 있는 도구가 없음.
---> 대신 시퀀스 객체를 새로 생성할 떄 여러가지 초기값들을 대입
--원하는 방식의 시퀀스를 만드는 방법
create sequence productSeq; --기본형(가장 많이 사용)
create sequence productSeq 옵션 옵션 옵션 옵션 옵션; --사용자 정의형
drop sequence productSeq;
create sequence productSeq
--increment by 1 -- 증가치(양수/음수 모두 사용 가능) ****
--start with 10 -- 시작값(seed) ****
--maxvalue 20 -- 최대값(넘으면 에러 발생) <ORA-08004: sequence PRODUCTSEQ.NEXTVAL exceeds MAXVALUE and cannot be instantiated>
--minvalue 10
--cycle --반복
cache 20 --눈에 보이는 제어(X)
;
--ORA-08002: sequence PRODUCTSEQ.CURRVAL is not yet defined in this session
select productSeq.nextval from dual;
select productSeq.currval from dual;
'오라클' 카테고리의 다른 글
INSERT문/UPDATE문/DELETE문 (DML) (0) | 2018.08.29 |
---|---|
서브쿼리(SubQuery) (0) | 2018.08.28 |
where절(SQL) (0) | 2018.08.23 |
Select문(DML) (0) | 2018.08.23 |
SQL 자료형 (0) | 2018.08.23 |