4. Sequence 생성, 수정, 삭제
가. Sequence 생성
지정된 수치로 증가하거나 감소하는 일종에 번호표이다. 또 최대 15개까지 만들 수 있으며 시작 값은 수정할 수 있다.)
CREATE SEQUENCE NAME
[INCREMENT BY n]
[START WITH n]
[{MAXVALUE n | NOMAXVALUE}]
[{MINVALUE n | NOMINVALUE}]
[{CYCLE | NOCYCLE}]
[{CACHE n | NOCACHE}]
※INCREMENT BY n은 sequence 번호간의 가격인 정수 n이며, 생략되면 sequence는 1씩 증가.
START WITH n은 생성되는 첫 번째 sequence 번호로 생략되면 시퀀스는 1씩 증가.
MAXVALUE n은 생성가능한 sequence의 최대값.
NOMAXVALUE는 기본 옵션으로 최대값은 1027
MINVALUE n은 생성가능한 sequence의 최소값(써주지 안으면 default 값인 38이 주어집니다.)
NOMINVALUE는 최소값 1.
CACHE n|NOCACHE는 Oracle Server가 미리 지정하고 메모리에 유지할 값의 수로 default값은 20입니다.
아래와 같이 실행하면 순서번호가 생성됩니다.
SQL> create sequence sim;
순서번호가 생성되었습니다.
SQL> create sequence member_no;
주문번호가 생성되었습니다.
SQL> select member_no.nextval, name, tel, code
2 from member;
NEXTVAL NAME TEL CODE
--------- ---------- --------------- ---------
1 이정석 324-7912 103
2 강호식 298-4871 104
3 이순민 392-9012 101
..............
18 장하림 348-3873 105
19 이길찬 876-7638 103
19 개의 행이 선택되었습니다.
30부터 시작해서 2씩 감소하는 범위가 최대값 70에서 최소값 -50까지에서 번호표를 생성한 다음 display합니다
SQL> create sequence member_no2 increment by -2 start with 30
2 maxvalue 70
3 minvalue -50;
주문번호가 생성되었습니다.
SQL> select member_no2.nextval, name, tel, addr
2 from member;
NEXTVAL NAME TEL ADDR
--------------- ---------------------------------
30 이정석 324-7912 서울 종로구 창신동 14-1
28 강호식 298-4871 서울 관악구 신림3동 45-2
26 이순민 392-9012 대전시 중구 무수동 301-2
............
0 임용순 345-3254 대전시 서구 관저동 원앙마을 349-23
-2 김영수 291-8374 충남 논산시 광석면 신당리 60
-4 장하림 348-3873 전남 여수시 노대면 오진리 29
-6 이길찬 876-7638 대구시 내동구 동내동 34-98
19 개의 행이 선택되었습니다.Sequence 수정
※Sequence에 대한 MAXVALUE 한계에 도달하면 sequence에 대한 추가적인 값이 할당되지 않게 되고 sequence를 계속 사용하려면 ALTER SEQUENCE 명령을 써서 수정 할 수 있습니다.
ALTER SEQUENCE NAME
[INCREMENT BY n]
[{MAXVALUE n | NOMAXVALUE}]
[{MINVALUE n | NOMINVALUE}]
[{CYCLE | NOCYCLE}]
[{CACHE n | NOCACHE}]
※자신의 sequence이거나 sequence에 대한 ALTER 권한을 가져야만 sequence를 수정할 수 있다.
아직 생성되지 않은 sequence값만이 ALTER SEQUENCE 명령에 영향받음.
유효성 검사를 하게 됩니다. 예를 들어, 새로운 MAXVALUE는 현재의 sequence값보다 작지 않아야 한다.
START WITH 옵션은 ALTER SEQUENCE를 써서 변경할 수 없습니다. 다른 번호에서 다시 시작하려면 이전 sequence를 삭제하고 다시 생성해야 한다.
나. Sequence 삭제
Sequence를 삭제하려면 DROP SEQUENCE 명령을 사용하십시오. Sequence를 제거 할 DROP ANY SEQUENCE 권한을 가지고 있거나 그 sequence의 소유자이어야 합니다.
DROP SEQUENCE 시퀀스 이름;
SQL> drop sequence member_no;
주문번호가 삭제되었습니다.
|