본문으로 바로가기
반응형

스프링으로 게시판을 만드려고 하니, 죄다 Mybatis Postgresql 등 오만잡다한 DB를 사용한다

뭐 전부 현업이 다 그런 db를 사용하거나 학원에서 많이 사용하니 많은 블로그에서 볼 수 있을 것이다.

다 장단점은 있을 것이고, 나는 그래서 오라클을 자주 사용하기에

오라클 oracle DB를 이용하여 게시판용 table을 만들고자 한다.

 

오라클은 auto increment라는 것을 지원하지 않기 때문에 시퀀스를 이용해야 한다.

먼저 아래와 같이 table을 만들어서

create table tbl_board(
  bno int not null,
  title varchar(50) not null,
  content varchar2(2000) not null,
  writer varchar(30) not null,
  regDate timestamp not null,
  viewCnt int default 0,
  primary key(bno)
);

bno 즉 게시판 넘버링을 할 수 있는 int 형 칼럼을 추가한다.

보통 마리아DB에서는 bno int not null auto_increment, 라는 생성문구로 자동으로 증가하는 칼럼 데이터를 생성할 수 있다.

하지만 오라클은 불가

그래서 오라클 DB에서 게시판번호와같이 자동으로 증가하는 Number를 사용하기 위해서는 시퀀스를 이용해야 한다.

CREATE SEQUENCE tmp_seq START WITH 1 INCREMENT BY 1 MAXVALUE 99999 CYCLE NOCACHE;

tmp_seq 라는 시퀀스를 만들건데, 1부터 시작하고 1씩 증가하며 맥스값이 99999이면서 99999까지 다 사용하면 다시 순환하는(cycle) 그리고 메모리에 할당하지 않는(nocache) 시퀀스를 생성한다.

이러한 시퀀스를 만들어서 db에 데이터를 입력할 때 해당필드는,

INSERT INTO tbl_board values(tmp_seq.NEXTVAL, 'tmptmp', '1','1',TO_DATE('20200415020700','YYYYMMDDHH24MISS'),'1');

이와 같이 시퀀스명.NEXTVAL 을 이용하여 테이블에 입력할 수 있다.

 

위와 같이 입력하였을 경우 샘플

이 경우 테이블 내 데이터를 전부 삭제하고 다시 새로운 데이터를 입력하게되면,

새로 입력된 데이텅 BNO 값은 10이 된다.

시퀀스를 1부터 다시 입력하고 싶으면 시퀀스초기화 등을 통해 시퀀스 값을 리셋해주거나, 새로운 시퀀스를 만들어서 사용해야 한다.

 

 

반응형