实际情况:
在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的生成分开,需要创建多张表!