오라클 시퀀스 생성하기 (MariaDB AUTO_INCREMENT)

어제 MariaDB로 만들어진 페이징이랑, 게시판 댓글 쿼리들을

오라클 쿼리들로 바꿨다. 마이바티스에서 사용하는

쿼리들은 바꾸는데 어렵지 않았다. (어차피 쿼리는 그게그거이기 때문에...)

그런데 시퀀스랑 외래키 설정 때문에 시간을 얼마나

버렸는지 모르겠다. 먼저 외래키 설정은 어렵지 않으니

다음 포스팅에서 따로 알아보겠다. 




MariaDB를 편하게 사용 하기위해 개발툴을 HeidiSQL을

썼다. 거기서 기본키로 설정된

댓글에 번호 메기는 rep_no 라는 컬럼을 기본값으로

AUTO_INCREMENT 줬다. 이것이 문제의 근원이다.


먼저 AUTO_INCREMENT 에 대해 알아보면

오라클에서의 시퀀스다 값이 생성 될 때 마다 1씩 증가 시켜준다.

즉 댓글 번호를 가르키는 rep_no 라는 컬럼이

한번 생성 즉, 댓글이 한번 생성 될 때마다 값이 1씩 증가되는 것이다.

처음 댓글을 달면 그 댓글의 rep_no 는 1이 되고

두 번째 댓글은 2, 세 번째 댓글은 3이 된다는 것이다.


난 오라클을 사용할때 개발툴로 sqldeveloper를 사용한다.

처음에 저것을 어떻게 하지 하고 구글에 쳐보니

대부분의 답이 아래처럼 직접 쿼리를 입력하여 생성해서

사용하라고 했다.


create sequence 시퀀스이름

start with 1

increment BY 1

maxvalue 1000;


근데 내가 못하는건지 난 못했다. 계속 댓글 작성하는 테스트를 하는데

rep_no가 null이라고 댓글작성이 안되고 오류가 떴다...


sqldeveloper안의 기능에서 혼자 찾아볼 생각은 않하고 그냥 처음부터

구글에 쳐서 다른 사람들이 올린것을 찾기만 했다.


그러다 몇 시간이 지나고 문득 sqldeveloper 안에 시퀀스 설정 하는게 있지 않을까?

라는 생각이 들어 디벨로퍼 에서 테이블 편집에 들어가 메뉴들을 하나씩 눌러보던 찰나에



있었다.... 시퀀스 설정이

시퀀스 설정을 하고 싶은 컬럼을 클릭하고 

하단 메뉴에 ID열에 들어간후

유형과 트리거, 시퀀스 스키마를 설정하면 된다.


위처럼 설정하고 댓글 테스트를 해보니 정상적으로

작동했다. 댓글도 잘 생성되고 repno 값도 1씩 잘 올랐다.

처음부터 저렇게 찾아 봤어야 했는데 괜히

몇 시간 날렸는지 모르겠다. 그래도 오늘 좋은거 배웠으니

오라클과 sqldeveloper를 사용해서 시퀀스 설정방법은

죽을때 까지 잊지 못할것같다.. 나중에 회사 들어가면

쓸일이야 있을지 모르겠지만..



댓글

Designed by JB FACTORY