Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 에러
- 삐옥
- CSS
- Servlet
- Java
- 이클립스
- oracle
- JS
- 서블릿
- 변수
- 자바
- 오라클
- 연산자
- function
- 오라클오류
- Operator
- variable
- sqldeveloper
- VisualStudioCode
- 오류
- SQL
- select
- 자료형
- From
- datatype
- 개발자
- error
- 코딩
- HTML
- Eclipse
Archives
- Today
- Total
뇨내
[Oracle-SQL Developer] Sequence 시퀀스 본문
SEQUENCE 시퀀스
- 시퀀스 객체 생성하기
CREATE SEQUENCE 시퀀스명;
CREATE SEQUENCE 시퀀스명
INCREMENT BY N
START WITH N
MAXVALUE N
MIN VALUE N
CYCLE
CACHE N;
- 시퀀스 객체 삭제하기
DROP SEQUENCE 시퀀스명;
- 시퀀스 객체 사용하기
시퀀스명.nextVal
시퀀스명.currVAl
- 데이터베이스 객체 중 하나
- 식별자를 만드는데 주로 사용한다. > PK컬럼에 값을 넣을 때 잘 사용한다.
- 일련 번호를 생성하는 객체
1
2
3
4
5
6
7
8
9
10
11
12
|
create sequence seqNum;
select seqNum.nextVal from dual; -- 1,2,3,4,5,... 호출할때마다 증가된 숫자를 반환
select 'A' || seqNum.nextVal from dual; --A15, A16,...
select 'A' || trim(to_char(seqNum.nextVal, '000')) from dual;-- A001, A002
create sequence seqNum2;
select 'A' || trim(to_char(seqNum.nextVal, '000')) || 'B' || trim(to_char(seqNum2.nextVal, '000')) from dual;
|
cs |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
-- 메모 테이블
drop table tblMemo;
create table tblMemo
(
seq number(3) primary key,
name varchar2(30),
memo varchar2(1000),
regdate date
);
select * from tblMemo;
drop sequence seqMemo;
create sequence seqMemo -- 마지막 번호를 확인 후 고쳐놓아야함 그냥 만들면 안됨
start with 13; -- 이런식으로!
insert into tblMemo(seq, name, memo, regdate) values (seqMemo.nextVal, '아무개', '테스트~.', sysdate);
-- 현재 사용중인 시퀀스 객체(seqMemo)의 마지막 번호??
-- 1. currVal : 가장 마지막에 생성한 숫자를 반환(like 자바 큐, 스택 peek())
--> 현재 계정으로 로그인 후 최소1번은 nextVal을 호출해야 그 다음부터 currVal를 호출할 수 있다.
select seqMemo.currVal from dual;
-- 2. nextVal
--> 문제 : 번호하나를 소비해버림 > 구멍이 발생
select seqMemo.nextVal from dual; -- 12 > 13 > 21(비정상적 종료일때 생기는 현상) : 큰일아님 = 문제X ==> 번호튀어도 무시해도 괜찮음
-- 3. max() 함수 사용
-- 그렇다면 이 방법 추천!
-- 번호 소비X
select max(seq) from tblMemo;
|
cs |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
drop sequence seqTest;
create sequence seqTest
increment by 1--증감치 지정(양수,음수)
start with 1--시작값(seed)
maxvalue 30 --최댓값 : 오버플로우되면 에러남, chache보다 커야함
--minvalue -5 --최솟값 : 오버플로우되면 에러남
cycle -- 무한반복시켜줌 : 30 > 1 > ... > 30 > 1 >...
cache 20 --HDD의 기록 단위, 보통 20으로 한다(기본값)
;
create sequence seqTest
increment by 1
start with 1;
select seqTest.nextVAl from dual; -- 1 > 6 > 11 > 16 > 21...
-- -1 > -2 > -3 > -4 > -5 등등
|
cs |
'Oracle > Casting + Sequence + Constraint' 카테고리의 다른 글
[Oracle-SQL Developer] Constraint 제약사항 (0) | 2021.11.21 |
---|---|
[Oracle - SQL Developer] Casting 형변환 (0) | 2021.11.16 |
Comments