[Oracle] 오라클 SEQUENCE(시퀀스)
시퀀스
- 자동 증가번호에 쓰임
- MAX+1 대신 사용 가능한 것
- 무조건 증가만 함
- 중간에 삭제해도 대체되지 않고 마지막값에 이어서 증가됨
PRIMARY KEY에 자주 쓰임 => 중복이 없는 값을 만들기 때문에 자동 증가번호 사용
테이블과 시퀀스는 별도임
이름 : table명_column명_seq
- 삭제 : DROP SEQUENCE 시퀀스명;
DROP SEQUENCE seq_no;
- 형식
CREATE SEQUENCE seq_no(시퀀스명) 옵션 /* 시작번호 , 증가값 , CACHE , CYCLE , MAX , MIN */
- 예시
CREATE SEQUENCE seq_no START WITH 1 INCREMENT BY 1 NOCACHE NOCYCLE;
START WITH
- 시작번호
INCREMENT BY
- 증가값, 증가폭
NOCYCLE | CYCLE
- CYCLE
- 1~10까지 사용 => 1로 돌아옴
- PRIMARY KEY에 자주 쓰임
- 무조건 증가만 함
1 2 3 4 5 => 4번 삭제 => 1 2 3 5 6 …
- NOCYCLE
CACHE | NOCACHE
- 미리 20정도를 저장 => NOCACHE
MAX_VALUE , MIN_VALUE
- 사용 빈도가 거의 없다.
seq.nextval
- 다음 값을 가지고 온다
SELECT seq_no.nextval FROM DUAL;
seq.currval
- 현재 값을 가지고 온다
SQL> SELECT seq_no.currval FROM DUAL;
시퀀스 예제
- 테이블 추가하기(제약조건)
CREATE TABLE jsp_board( no NUMBER, name VARCHAR2(34) CONSTRAINT jb_name_nn NOT NULL, subject VARCHAR2(1000) CONSTRAINT jb_subject_nn NOT NULL, content CLOB CONSTRAINT jb_content_nn NOT NULL, pwd VARCHAR2(10) CONSTRAINT jb_pwd_nn NOT NULL, regdate DATE DEFAULT SYSDATE, hit NUMBER DEFAULT 0, CONSTRAINT jb_no_pk PRIMARY KEY(no) );
- 시퀀스 추가하기
CREATE SEQUENCE jb_no_seq START WITH 1 INCREMENT BY 1 NOCYCLE NOCACHE;
- no에 시퀀스 적용해서 데이터값 집어넣기
INSERT INTO jsp_board(no,name,subject,content,pwd) VALUES(jb_no_seq.nextval,'홍길동','JSP처음수업','사용법(JavaScript,CSS)','1234'); INSERT INTO jsp_board(no,name,subject,content,pwd) VALUES(jb_no_seq.nextval,'홍길동','JSP처음수업','사용법(JavaScript,CSS)','1234'); INSERT INTO jsp_board(no,name,subject,content,pwd) VALUES(jb_no_seq.nextval,'홍길동','JSP처음수업','사용법(JavaScript,CSS)','1234'); INSERT INTO jsp_board(no,name,subject,content,pwd) VALUES(jb_no_seq.nextval,'홍길동','JSP처음수업','사용법(JavaScript,CSS)','1234'); INSERT INTO jsp_board(no,name,subject,content,pwd) VALUES(jb_no_seq.nextval,'홍길동','JSP처음수업','사용법(JavaScript,CSS)','1234'); INSERT INTO jsp_board(no,name,subject,content,pwd) VALUES(jb_no_seq.nextval,'홍길동','JSP처음수업','사용법(JavaScript,CSS)','1234'); INSERT INTO jsp_board(no,name,subject,content,pwd) VALUES(jb_no_seq.nextval,'홍길동','JSP처음수업','사용법(JavaScript,CSS)','1234'); INSERT INTO jsp_board(no,name,subject,content,pwd) VALUES(jb_no_seq.nextval,'홍길동','JSP처음수업','사용법(JavaScript,CSS)','1234'); COMMIT;
댓글
댓글 쓰기