반응형

2020/11/12 - [개발] - MariaDB Sequence(10.3)이상

 

MariaDB Sequence(10.3)이상

MariaDB 시퀀스 지원을 하여 사용하게 되었어요. 이전 프로젝트에서는 시퀀스 테이블을 이용하던지 했는데 이번에 10.3 이상에서는 정식으로 지원을 하게 되어 사용하게 되었어요. mariadb.com/kb/en/cre

fknd12.tistory.com

를 이용하여 시퀀스를 사용 중에 조건에 따라 시퀀스 또는 일반 값을 리턴해야하는 경우가 생겨 사용중에 버그? 같이 값이 리턴이 안 된 경우가 있어 포스팅해볼게요

<selectKey resultType="int" keyProperty="predlstNo" order="BEFORE">
	SELECT NEXTVAL(seq)    
</selectKey>

 

사용했을 때는 insert시 사용이 잘되었는데 

<selectKey resultType="int" keyProperty="predlstNo" order="BEFORE">
	SELECT NEXTVAL(seq)    
</selectKey>
를
<selectKey resultType="int" keyProperty="predlstNo" order="BEFORE">
	<choose>
      <when test="predlstNo != null and predlstNo > 0">
        SELECT PREDLST_NO FROM  INFO WHERE PREDLST_NO = #{predlstNo, jdbcType=INTEGER}
      </when>
      <otherwise>
        SELECT NEXTVAL(seq)
      </otherwise>
  </choose> 
</selectKey>
 

변경하여 실행을 하였는데 sql log에도 값이 리턴이 안되어 한참 이것저것 알아보는 중에

<selectKey resultType="int" keyProperty="predlstNo" order="BEFORE">
	<choose>
      <when test="predlstNo != null and predlstNo > 0">
       SELECT #{predlstNo, jdbcType=INTEGER}
      </when>
      <otherwise>
        SELECT NEXTVAL(seq)
      </otherwise>
  </choose> 
</selectKey>
 

이렇게 변경을 하였더니 값이 전달이 되었어요 일반 select로 SELECT PREDLST_NO FROM  FABS_LIVESTOCK_STALL_INFO WHERE PREDLST_NO = #{predlstNo, jdbcType=INTEGER}이렇게는 왜 값이 전달이 안되었는지 모르지만 2번째 방법으로 하니 잘 동작이 되었어요.

DB는 MYRIADB을 사용하고 있어요

반응형

+ Recent posts