반응형
SEQUENCE(시퀀스)
자동 번호 발생기 역할을 하는 객체
순차적으로 정수 값을 자동으로 생성해줌
적합한 PK가 없을때 사용
1 . 작성 방법
[기본문법]
CREATE SEQUENCE 시퀀스명
[옵션]
INCREMENT BY 숫자
: 다음 값에 대한 증가치, 생략하면 자동 1 기본
START WITH 숫자
: 처음 발생시킬 값 지정, 생략하면 자동 1 기본
MAXVALUE 숫자 | NOMAXVALUE
: 발생시킬 최대 값 지정(10의 27승)
MINVALUE 숫자 | NOMINVALUE
: 최소값 지정(-10의 26승)
CYCLE | NOCYCLE
: 값 순환 여부
CACHE 바이트크기 | NOCACHE
: 캐쉬메모리 기본 값은 20바이트, 최소는 2바이트
2. 시퀀스 생성
CREATE SEQUENCE SEQ_EMPID
START WITH 300
INCREMENT BY 5
MAXVALUE 310
NOCYCLE
NOCACHE;
3. NEXTBAL / CURRVAR
시퀀스명.CURRVAL
: 해당 시퀀스가 가지고 있는 CURRENT VALUE(현재 값)
시퀀스명.NEXTVAL
: 해당 시퀀스가 가질 다음 값 리턴
NEXTVAL를 1회 수행해야 CURRVAL를 알 수 있음!
SELECT SEQ_EMPID.NEXTVAL FROM DUAL; -- 300
SELECT SEQ_EMPID.CURRVAL FROM DUAL; -- 300
SELECT SEQ_EMPID.NEXTVAL FROM DUAL; -- 305
SELECT SEQ_EMPID.CURRVAL FROM DUAL; -- 305
SELECT SEQ_EMPID.NEXTVAL FROM DUAL; -- 310
SELECT SEQ_EMPID.CURRVAL FROM DUAL; -- 310
SELECT SEQ_EMPID.NEXTVAL FROM DUAL; -- MAXVALUE를 넘어서면 에러 발생
4. NEXTBAL / CURRVAR 사용 가능 여부
5. 데이터 딕셔너리를 통해 만들어진 SEQUENCE 조회 가능
SELECT * FROM USER_SEQUENCES;
6. ALTER 사용하여 시퀀스 변경 가능
- START WITH 값은 변경이 불가능하므로 해당 값을 변경하려면 DROP으로 삭제 후 다시 생성해야 함.
ALTER SEQUENCE SEQ_EMPID
INCREMENT BY 10
MAXVALUE 400
NOCYCLE
NOCACHE;
7. INSERT 에 사용하기
CREATE SEQUENCE SEQ_EID
START WITH 300
INCREMENT BY 1
MAXVALUE 10000
NOCYCLE
NOCACHE;
INSERT
INTO EMPLOYEE
(
EMP_ID, EMP_NAME, EMP_NO, EMAIL, PHONE
, DEPT_CODE, JOB_CODE, SAL_LEVEL, SALARY, BONUS
, MANAGER_ID, HIRE_DATE, ENT_DATE, ENT_YN
)
VALUES
(
SEQ_EID.NEXTVAL, '홍길동', '660101-1111111', 'hong_gd@greedy.com', '01012345678'
, 'D2', 'J7', 'S1', 5000000, 0.1
, 200, SYSDATE, NULL, DEFAULT
);
8. 시퀀스 삭제
DROP SEQUENCE SEQ_EMPID;
반응형
'프로그래밍 > SQL_Oracle' 카테고리의 다른 글
11_OracleDB SQL : TCL (Transaction Control Language/ 트랜잭션 제어 언어)_COMMIT, ROLLBACK (0) | 2022.07.20 |
---|---|
08 _OracleDB SQL : DDL ( ALTER, DROP) 명령어 정리 (0) | 2022.07.20 |
07_OracleDB SQL : DML (INSERT, DELETE, UPDATE, SELECT) (0) | 2022.07.20 |
06_OracleDB SQL : DDL(CREATE TALBE) 및 제약조건_테이블만들기 (0) | 2022.07.20 |
05_OracleDB SQL : SUBQUERY(서브쿼리) (0) | 2022.07.20 |