最近需要将项目从DB2数据库迁移到MySQL数据库,由于MySQL没有sequence,于是上网找了下MySQL的sequence实现,基本都是基于存储过程和函数实现的,下面第一、二两种实现是从网上看到的,三、四、五三种实现是自己的想法。第五种终极实现亲测可行,但是没有经过高并发检验。
1、创建表用于存储当前序列值
CREATE TABLE `TBL_SEQUENCE_1` (
`sequence_name` varchar(64) NOT NULL COMMENT '序列名称' ,
`value` bigint NOT NULL DEFAULT 0 COMMENT '当前值' ,
PRIMARY KEY (`sequence_name`)
)
ENGINE=InnoDB
DEFAULT CHARACTER SET=utf8 COLLATE=utf8_general_ci
;
第一种实现,不加锁,高并发下可能返回重复值
DELIMITER //
CREATE