지난 포스팅에 MySQL과 MS-SQL의 시퀀스 생성 및 초기화 방법에 대하여 알아보았습니다.
오라클도 같이 포스팅을 할까하다가 사용법이 살짝 달라서 별도의 포스팅을 하기로 했습니다.
2014/10/14 - [코드저장소/sql] - MySQL과 MSSQL의 시퀀스생성 및 초기화 하는방법에 대해서 알아보도록 하자
오라클이 아닌 MySQL과 MS-SQL sequence 처리방법은 위 링크를 참고해 주시면 되겠습니다.
오라클이 아닌 다른 DBMS들의 시퀀스들은 Create Table 을 해주었을때
자동증가 시키고자 하는 컬럼에 속성을 지정을 해주면 되었는데
오라클에는 CREATE TABLE이 아닌 CREATE SEQUENCE 명령을 이용하여 시퀀스를 별도로 생성 한 후,
테이블에 데이터 등록 시 생성된 시퀀스를 자동증가 시키고자 하는 컬럼에 적용을 해주면 되는 것입니다.
CREATE SEQUENCE 생성하고자하는시퀀스이름 START WITH 초기화숫자값 INCREMENT BY 증가값 MAXVALUE 최대값 또는 NOMAXVALUE -- 무한을의미 MINVALUE 최소값 또는 NOMINVALUE -- 무한을의미
위 구조를 이용하여 생성 해보도록 하겠습니다.
CREATE SEQUENCE SEQ START WITH 1 INCREMENT BY 1 NOMAXVALUE NOMINVALUE
최대 또는 최소값을 무한값으로 잡아주고, 시작값을 1,1씩증가에 대한 "SEQ"라는 시퀀스를 생성하었습니다.
이어서 시퀀스 테스트를 위하여 임의의 테이블을 하나 생성해도록 하겠습니다.
CREATE TABLE SEQUENCE_TABLE_ORACLE ( SEQ NUMBER PRIMARY KEY, TITLE VARCHAR(20) )
테이블 생성을 완료 하였다면 시퀀스와 생성된 테이블을 이용하여
INSERT문을 주어 데이터 등록을 해보죠.
등록하기전 간단하게 시퀀스에서 주로 사용되는 명령어 먼저 보시겠습니다.
INSERT문을 이용하여 시퀀스를 데이터에 등록시
시퀀스이름.NEXTVAL
이라는 명령어를 사용합니다
그리고 등록된 최종시퀀스를 확인하기 위해서는
SELECT 시퀀스이이름.CURRVAL FROM DUAL
와 같이 주시면 되겠습니다.
※ CURRVAL부분은 단독으로 사용이 불가능합니다.
만약 호출을 하시게 된다면
ORA-08002: sequence XXX.CURRVAL is not yet defined in this session
위 처럼 세션정의되지 않은 오류가 발생할것입니다.
CURRVAL은 NEXTVAL 이용한 다음 이어서 CURRVAL명령어를 사용해주시면 되겠습니다.
그럼 이제 "SEQUENCE_TABLE_ORACLE"테이블에 데이터를 INSERT 해보도록 하겠습니다.
INSERT INTO SEQUENCE_TABLE_ORACLE (SEQ,TITLE) VALUES(SEQ.NEXTVAL,'제목1'); INSERT INTO SEQUENCE_TABLE_ORACLE (SEQ,TITLE) VALUES(SEQ.NEXTVAL,'제목2'); INSERT INTO SEQUENCE_TABLE_ORACLE (SEQ,TITLE) VALUES(SEQ.NEXTVAL,'제목3');
INSERT문을 완료 하셨다면 실행결과를 보시겠습니다.
위처럼 자동증가 된것을 확인 할 수 있겠습니다.
오라클 시퀀스 관련해서 포스팅을 해보았습니다.
by 개발로짜
MSSQL,ORACLE을 이용하여 트리구조로 출력시켜주는 재귀쿼리를 만들어보자 (0) | 2014.10.26 |
---|---|
oracle,mssql,mysql 문자열 합치기 사용법을 비교해보자 (0) | 2014.10.17 |
MySQL과 MSSQL의 시퀀스생성 및 초기화 하는방법에 대해서 알아보도록 하자 (0) | 2014.10.14 |
MySQL- GROUP_CONCAT 함수로 세로로 출력된 결과를 하나의 컬럼에 가로로 출력하기 (0) | 2014.10.13 |
쿼리의 조건문 사용시 oracle에는 decode가있고 mysql에는 if가 있다 (0) | 2014.10.09 |