[Oracle] 오라클 #11, 시퀀스(Sequence)

시퀀스, 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; --오라클 연결되어있는지 확인한 것.



댓글

Designed by JB FACTORY