2014/08/11 - [DB/MSSQL] - MS-SQL 시퀀스 identity 생성 및 초기화하기
2014/08/11 - [DB/MySQL] - MySQL 시퀀스 auto_increment 생성 및 초기화하기
1. 오라클 시퀀스 생성하기
CREATE SEQUENCE 시퀀스명
CREATE SEQUENCE 시퀀스명 START WITH n INCREMENT BY n MAXVALUE n | NOMAXVALUE MINVALUE n | NOMINVALUE
위의 옵션에 대해서 추가 설명을 드리자면,
START WITH n ▶ n = 초기화 값
INCREMENT BY n ▶ n = 증가값
MAXVALUE n ▶ n = 최대값 또는 NOMAXVALUE = 무한대 값
MINVALUE n ▶ n = 최소값 또는 NOMINVALUE = 무한대 값
을 의미한다.
그렇다면 이제 시퀀스 생성을 해보도록 하자
시퀀스 명 = test_seq
초기값 = 1
증가값 = 1
최대값 = 10000
create sequence test_seq start with 1 increment BY 1 maxvalue 10000
위와같이 정상적으로 성공한 메시지가 출력되었다.
생성한 시퀀스를 정상적으로 확인 하기 위해서 테이블을 하나 생성하여 시퀀스적용을 해보도록 하자
테이블 구조는 지난 포스팅인 MySQL에서의 시퀀스 샘플링 테이블과 같은구조로 생성 하겠다.
2014/08/11 - [DB/MySQL] - MySQL 시퀀스 auto_increment 생성 및 초기화하기
CREATE TABLE test_board( seq NUMBER NOT NULL PRIMARY KEY, title NVARCHAR2(20) NOT NULL );
위와 같이 생성하였다면 seq 컬럼에 시퀀스를 적용해보도록 하겠다.
insert문으로 시퀀스 + 데이터를 삽입한 후, select문을 통해 삽입된 데이터를 확인해보도록 하자
INSERT INTO test_board(seq,title) VALUES(test_seq.nextval,'hello'); INSERT INTO test_board(seq,title) VALUES(test_seq.nextval,'hello2'); INSERT INTO test_board(seq,title) VALUES(test_seq.nextval,'hello3'); select * From test_board;
위와같이 정상적으로 seq 컬럼이 자동증가 하였다.
2. 시퀀스 등록
테이블[자동증가컬럼명]-시퀀스명.NEXTVAL
3. insert문 실행 후 최종(현재) 시퀀스값 조회
SELECT 시퀀스명.CURRVAL FROM DUAL
INSERT INTO test_board(seq,title) VALUES(test_seq.nextval,'hello4'); select test_seq.currval from dual;
위와같은 방식으로 주어야한다.
select test_seq.currval from dual;
라고 줄경우에는
ORA-08002: sequence TEST_SEQ.CURRVAL is not yet defined in this session
라는 오류 메시지가 나오는것을 확인 할 수 있을것이다.
4. 삽입없이 최종(현재) 시퀀스값 조회
SELECT *
FROM USER_SEQUENCES
WHERE SEQUENCE_NAME = UPPER('시퀀스명')
select * from user_sequences where sequence_name=upper('test_seq');
라고 주면 다음과 같은 시퀀스 정보에 대해서 확인 할 수 있을 것이다.
LAST_NUMBER 컬럼이 현재 시퀀스 값을 의미 한다.
시퀀스 초기화 할시 현재 시퀀스를 DROP 하고 다시 생성을 해야 한다고 하더라...
물론 초기화(?) 는 가능하는데 일종의 꼼수라고 한다.
시간이 나면 이부분에 대해서 포스팅을 하도록 하겠음.
도움이 되셨다면 공감클릭! 궁금하신점은 댓글!!
Oracle - if ~ else 조건문 사용하기 : DECODE (0) | 2014.08.24 |
---|---|
오라클 - 널체크(NVL 사용하기) (0) | 2014.08.23 |
ORACLE 오라클 rownum을 이용하여 페이징 처리하기 (0) | 2014.08.15 |
오라클(Oracle) 데이터를 일괄로 다른테이블에 INSERT 하기 (INSERT INTO ... SELECT ... FROM ...) (2) | 2014.08.13 |
오라클 계층형 트리구조 쿼리 (재귀호출) - START WITH .. CONNECT BY PRIOR (0) | 2014.08.12 |