mysql中没有提供序列,我们可以使用表来存储序列,表结构如下
定义函数获取序列的下一个值:
CREATE DEFINER=`xir_trdj`@`%` FUNCTION `XCC_NEXTVAL2`(V_SEQ_NAME VARCHAR(50),INTERVAL_VAL INT(11)) RETURNS int(11)
DETERMINISTIC
BEGIN
UPDATE SEQUENCE SET CURRENT_VAL=LAST_INSERT_ID(IF(CURRENT_VAL+(INCREMENT_VAL*INTERVAL_VAL) > MAX_VAL,INCREMENT_VAL*INTERVAL_VAL+(CURRENT_VAL-MAX_VAL),CURRENT_VAL+(INCREMENT_VAL*INTERVAL_VAL))) WHERE SEQ_NAME = V_SEQ_NAME;
RETURN LAST_INSERT_ID();
END
在mybatis中调用
<if test="'${dialect}'=='mysql'">
(select XCC_NEXTVAL2('S_SET_INST_SECU_CASH', 1) from dual) CASH_INST_ID,
</if>
获取当前值