[구디아카데미]
CREATE SEQUENCE SEQ_BASIC; // SEQUENCE 객체 하나 생성
SELECT SEQ_BASIC.NEXTVAL FROM DUAL; // 시퀀스명.NEXTVAL : 번호를 차례대로 부여
//현재 SEQUENCE 값을 확인하기
// 시퀀명.CURRVAL를 이용한다
SELECT SEQ_BASIC.CURRVAL FROM DUAL;
CREATE TABLE ATTACHMENT( // 첨부파일 테이블을 하나 생성
ATTACH_NO NUMBER PRIMARY KEY,
BOARD_REF NUMBER REFERENCES BOARD(BOARD_NO),
FILENAME VARCHAR2(200) NOT NULL
);
// 게시물 테이블에는 기본키에 순차적으로 번호를 넣도록 함
INSERT INTO BOARD VALUES(SEQ_BASIC.NEXTVAL,'첨부파일게시글','첨부파일있다','유병승',SYSDATE);
// 첨부파일 테이블에는 CURRVAL을 이용해서 값을 받도록 한다
// 현재 테이블관계에서 SEQ_BASIC.CURRVAL가 SEQ_BASIC.NEXTVAL를 참조한다
INSERT INTO ATTACHMENT VALUES(1,SEQ_BASIC.CURRVAL,'내사진.PNG');
INSERT INTO ATTACHMENT VALUES(2,SEQ_BASIC.CURRVAL,'내사진2.PNG');
✅ SEQUENCE 옵션값 활용
CREATE SEQUENCE SEQ_01 // 100부터 시작하는 SEQUENCE 객체 생성
START WITH 100;
CREATE SEQUENCE SEQ_02 // 100부터 시작하고 10씩 증가하는 SEQUENCE 객체 생성
START WITH 100
INCREMENT BY 10;
CREATE SEQUENCE SEQ_03 // 100부터 시작하고 50씩 감소하며 최대값이 200, 최소값이 0인 SEQUENCE 객체 생성
START WITH 100 // 계속 실행하여 0보다 작아지면 오류남! (최소값이 0까지표현 가능하기 때문에)
INCREMENT BY -50
MAXVALUE 200
MINVALUE 0;
CREATE SEQUENCE SEQ_04 // 100부터 시작하고 50씩 증가하며 최소값 표현이 0 최대값 표현이 200이며
START WITH 100 // 50씩 증가하다 값이 200이 넘으면 다시 0으로 순환 하는 SEQUENCE 객체 생성
INCREMENT BY 50
MAXVALUE 200
MINVALUE 0
CYCLE
NOCACHE; // 순환하지 않고 50씩 증가하면 한번에 20개의 값을 표현할 수 없기 때문에 NOCACHE로 지정
// 50 100 150 200 -> 4개까지만 미리 번호 생성 가능!
SELECT 'P_'||TO_CHAR(SEQ_05.NEXTVAL,'0000') FROM DUAL;