Mysql实现序列效果
当我们想要一个连续的且自增的数据型值,对于oracle数据库,可以通过创建一个sequence来实现。但不巧,当我们所用的是mysql数据库时该如何实现呢。通常对于单个表需要一个自增的字段,我们可以通过使用mysql的auto_increment来实现,但是一个表只能有一个自增字段,也就是说自增长只能分给固定表固定字段,不能被多表共用,并且只能是数字类型。当我们一个表中有多个自增字段,或者进行了分表时,该如何实现呢?实现方法有很多,如雪花算法,借助redis等都可以获取一个满足条件的值。这里主要介绍一下使用mysql的function来实现
—创建序列化表
CREATE TABLE sequence (
seq_name VARCHAR(50) NOT NULL, -- 序列名称
current_val INT NOT NULL, -- 当前值
increment_val INT NOT NULL DEFAULT 1, -- 步长(跨度)
PRIMARY KEY (seq_name) );
—准备一条数据插入到表中
INSERT INTO sequence VALUES ('seq_users_id', '0', '1');
—创建查询当前值函数
DELIMITER $$
CREATE
/*[DEFINER = {
user | CURRENT_USER }]*/
FUNCTION `springboot`.`currval`(v_seq_name VARCHAR(50