OBJECT SEQUENCE
o 순차적으로 정수 값을 자동으로 생성하는 객체로 자동 번호 발생기 역할을 한다.
o 옵션을 지정하지 않아도 호출 시 자동으로 1씩 증가한다.
o 표현식
CREATE SEQUENCE 시퀀스명[옵션]
o 시퀀스작동 예약어 시퀀스.NEXTVAL, 시퀀스.CURRVAL를 사용하여 생성한 시퀀스를 사용할 수 있다.
o NEXTVAL, CURRVAL - 동일한 세션에서 CURRVAL를 출력하려면 NEXTVAL을 출력하고 실행해야 한다.
o NEXTVAL/CURRVAL 사용 가능 여부
o 시퀀스 생성하기
-- 1부터 실행, 실행 시 마다 1씩 증가 ![]() SELECT SEQ_BASIC.CURRVAL FROM DUAL; -- 현재 시퀀스 값 확인 ![]()
CREATE SEQUENCE SEQ_OPTION START WITH 100 -- 시작 값 INCREMENT BY 10; -- 증가 값 SELECT SEQ_OPTION.NEXTVAL FROM DUAL; -- 100부터 시작, 10씩 증가
CREATE SEQUENCE SEQ_OPTION2 START WITH 60 INCREMENT BY 6 MAXVALUE 90 MINVALUE 0 CYCLE -- CYCLE 선언 시 MAXVALUEM, MINVALUE 값이 있어야 한다. -- CYCLE 순환 범위(MINVALUE ~ MAXVALUEM)를 지정해 줘야하기 때문이다. NOCACHE;
SELECT SEQ_OPTION2.NEXTVAL FROM DUAL; |
o 시퀀스 활용하기 - PK값으로 설정하기
CREATE TABLE BOARD_SEQ( BOARD_NO NUMBER PRIMARY KEY, BOARD_TITLE VARCHAR2(200) NOT NULL, BOARD_CONTENT VARCHAR2(800), BOARD_WRITER VARCHAR2(20) REFERENCES EMPLOYEE(EMP_ID), BOARD_DATE DATE );
CREATE SEQUENCE SEQ_BOARD; INSERT INTO BOARD_SEQ VALUES (SEQ_BOARD.NEXTVAL,'제목1','내용1','200',SYSDATE); SELECT * FROM BOARD_SEQ; |
- 컬럼 BOARD_NO의 데이터를 SEQUENCE를 넣음으로써 중복이 없다.
-- SEQUENCE 정보 조회하기 SELECT * FROM USER_SEQUENCES;
-- SEQUENCE 이용 다른 활용하기 SELECT 'B_'||SEQ_BOARD.NEXTVAL FROM DUAL;
-- SEQUENCE 수정하기 ALTER SEQUENCE SEQ_BOARD INCREMENT BY 10;
-- 시퀀스 지우기 DROP SEQUENCE SEQ_BOARD; |
o SEQUENCE를 사용할 수 없는 구문
- VIEW구문에서 사용불가
- DISTINCT를 포함하고 있는 구문
- GROUP BY HAVING ORDER BY 포함된 구문
- SELELCT, DELETE, UPDATE 서브쿼리
- CREATE TABLE, ALTER TABLE에서 DEFAULT 사용 못함
'DB' 카테고리의 다른 글
[SQL] PL/SQL – 조건문(IF, ELSE, ELSIF, CASE) (0) | 2021.03.25 |
---|---|
[SQL] PL/SQL – 타입 변수 선언, SELECT, INSERT문 처리 (0) | 2021.03.23 |
[SQL] VIEW – 인라인 뷰, 스토어드 뷰, VIEW 옵션 (0) | 2021.03.22 |
[SQL] VIEW – 구조, 특징, 조작 불가능한 경우 (0) | 2021.03.22 |
[SQL] DCL(Data Control Language) – GRANT, REVOKE, TRANSACTION (0) | 2021.03.20 |