Knowledge Map

mysql에서 currval 유사 구현하기 본문

DataBase

mysql에서 currval 유사 구현하기

2017. 4. 12. 18:33

mysql은 시퀀스(sequence)가 존재하지 않는다.


오라클에서는 시퀀스를 이용해서 여러가지를 하는데, 그 중 하나가 게시판에서의 번호 매기기이다.


오라클에서는 시퀀스를 만든다음에 해당 시퀀스의 nextval, currval를 이용해서 테이블에 데이터를 넣을수 있지만 mysql은 그렇지가 못하다.


이것을 보완하기 위해 시퀀스 역할을 하는 테이블을 하나 만드는 경우도 있다.


아래는 auto_increment와 select문을 이용해서 시퀀스의 nextval , currval을 대신하는 쿼리문이다.


참고로 해당 테이블의 인덱스는 index로 되어있으며 옵션으로 auto_increment가 설정되어 있다.


1
2
3
insert table tablename( name, title, content, bHit, bGroup, bStep, BIndent ) 
    select 'james''title is title''content is longger than title'0, max(index)+100 
    from tablename;
cs


원래의 insert 쿼리문과는 다른 모습이다. (아래)


1
insert table tablename( colnames ) values ( values );
cs


1번째 쿼리문 처럼 입력을 하게 되면 정상적으로 작동하고 index번호와 동일한 값이 bGroup에 들어간다는 것을 알수 있다.




출처 : http://stackoverflow.com/questions/5360117/insert-and-set-value-with-max1-problems

Comments