在Oracle数据库中若想要一个连续的自增的数据类型的值,可以通过创建一个sequence来实现。而在MySQL数据库中并没有sequence。通常如果一个表只需要一个自增的列,那么我们可以使用MySQL的auto_increment(一个表只能有一个自增主键)。若想要在MySQL像Oracle中那样使用序列,我们该如何操作呢
例如存在如下表定义:
create table `t_user`(
`id` bigint auto_increment primary key,
`user_id` bigint unique comment '用户ID',
`user_name` varchar(10) not null default '' comment '用户名'
);
其中user_id要求自增有序且唯一。实现方式有很多比如雪花算法、使用Redis或者Zookeeper等都可以获取一个满足条件的值,这里就不一一介绍。这里介绍使用MySQL的auto_increment和last_insert_id()来实现类似Oracle中的序列的方式。
方式一、使用存储过程
一、创建一个包含自增主键的简单表。示例如下:
create table `t_user_id_sequence` (
`id` bigint not null auto_increment primary key,
`t_text` varchar(5) not null default '' comment 'insert value'
);
二、创建一个存储过程
delimiter &&
create procedure `pro_user_i