mysql 兼容序列的解决方案

实际情况:

在oracle中的获取序列的逻辑,实际上调用了一个方法来获取一个唯一id,
但是为了在不修改代码的基础上,能够兼容orcale和mysql,所以才提出了下面的解决方案!
cobar实际调用的sql语句
==> Preparing: select seq_fun('SEQ_T_APIKEY')


思路

在mysql中创建一个seq_fun的方法,同时创建一张表,利用mysql的自增长生成SEQ_T_APIKEY,语句如下:

CREATE FUNCTION `seq_fun`(tb_name VARCHAR(20)) RETURNS BIGINT(20)
    READS SQL DATA
BEGIN
      CASE
      WHEN tb_name = 'SEQ_T_APIKEY' THEN 
      INSERT myseq VALUES(NULL); DELETE FROM myseq; RETURN LAST_INSERT_ID();
      END CASE;
END$$

缺点

如果要想将序列ID的生成分开,需要创建多张表!

你可能感兴趣的:(mysql 兼容序列的解决方案)