[Oracle] 오라클 #11, 시퀀스(Sequence)
- Database/Oracle
- 2019. 2. 23. 14:13
시퀀스, Sequence
- 시퀀스 객체
- DB Object 중 하나.
- DB 개발자에게 식별자들을 관리하기 편하도록 기능 제공.
- 시퀀스의 역할은 중복되지 않은 유일한 숫자를 반환하는데 있다. 중간에 건너뛰는 숫자에 연연하지 말것(*****)
- 절대로 중간에 비어있는 숫자가 존재하지 않아야 한다면 시퀀스 객체를 사용하지 말것 -> 개발자가 직접 관리할 것.
시퀀스 객체 사용하기
1. create : 생성
2. alter : 수정
3. drop : 삭제
시퀀스 생성하기
- create sequence 시퀀스명;
- create sequence 테이블명(컬럼명)식별자;
시퀀스 객체 사용하기
1.testSeq.nextval : 1 증가된 다음 일련번호 반환
2.testSeq.currval : 증가 시키지 않은 현재 일련번호 반환
--시퀀스 객체는 특정 테이블에 종속적이지 않다.(주로 테이블과 연관지어 사용은 한다.)
create sequence testSeq; --test_seq이렇게하거나.
select testSeq.nextval from dual;
select testSeq.currval from dual;
시퀀스 삭제
drop sequence testSeq;
create table tblMemo(
seq number primary key,
name varchar2(20) not null,
memo varchar2(1000) not null
);
create sequence memoSeq; -> 메모테이블의 PK값으로 쓸 시퀀스객체 생성. -> insert 될때마다 nextval 호출하면서 1씩 증가할 것임
insert into tblMemo(seq, name, memo) values(1,'홍길동','메모입니다.');
insert into tblMemo(seq, name, memo) values(memoSeq.nextval,'홍길동','메모입니다.');
insert into tblMemo(seq, name, memo) values(memoSeq.nextval,'홍길동',null);
select * from tblMemo;
select memoSeq.nextval from dual;
select memoSeq.currval from dual; --호출되는 것이랑 insert 하는 것이랑은 별개라 증가는 한다.
--테이블의 식별자
--1. 숫자.
--2. 문자열.
--상품테이블
--상품코드, 상품명, 가격, 수량
create table product(
code varchar2(5) primary key,
name varchar2(100) not null,
price number not null,
qty number not null
);
create sequence productSeq;
select 'AA'||trim(to_char(productSeq.nextval,'000')) from dual;
insert into product(code, name, price, qty)
values('AA'||trim(to_char(productSeq.nextval,'000')),'상품명',1000,10);
insert into product(code, name, price, qty)
values('AA'||trim(to_char(productSeq.nextval,'000')),'상품명2',3000,10);
select * from product;
--시퀀스 객체 초기화(1부터 다시 시작하도록)
drop sequence productSeq;
create sequence productSeq;
--시퀀스 객체는 일련번호를 초기화 할 수 있는 도구가 없음
--> 시퀀스 객체를 새로 생성할때 여러가지 초기값들을 대입.
drop sequence productSeq;
--원하는 방식의 시퀀스를 만드는 방법\
create sequence productSeq; --기본형
create sequence productSeq 옵션 옵션 옵션 옵션;--사용자 정의형.
create sequence productSeq
-- increment by 1 --증감치 (이거씩 증가) 음수도 된다.
-- start with 10 --출발값, 시드값, 시작값
-- maxvalue 20 --최댓값 (넘어서면 에러 발생)
-- minvalue 10
-- cycle
;
select productSeq.nextval from dual;
show user; --오라클 연결되어있는지 확인한 것.
'Database > Oracle' 카테고리의 다른 글
[Oracle] 오라클 #13, update, delete문과 rollback (2) | 2019.02.27 |
---|---|
[Oracle] 오라클 #12, insert 삽입구문(특이한 insert 구문) (4) | 2019.02.25 |
[Oracle] 오라클 #10, DDL, DML (0) | 2019.02.21 |
[Oracle] 오라클 #9, Casting, 형변환함수 (0) | 2019.02.20 |
[Oracle] 오라클 #8, 오라클 함수(문자열 함수) (0) | 2019.02.16 |