文章缩略图

总结MySQL中使用序列Sequence的方式

2022-09-14 00:00:00 技术教程 7944 阅读需40分钟
图标

本文最后更新于2022-09-14 00:00:00已经过去了956天 请注意内容时效性

热度 126 评论 0 点赞57
钞能力。你在哪?此处内容已经被作者隐藏,请输入验证码查看内容
验证码:
请关注本站微信公众号,回复“验证码”,获取验证码。在微信里搜索“钞能力。你在哪?”或者“mdyc919293”或者微信扫描右侧二维码关注公众号。

一淘模板给大家带来了关于mysql的相关知识,序列是一组整数如1,2,3,...为了在需要时生成的,下面介绍了关于MySQL中使用序列Sequence的相关资料,希望对大家有帮助。

总结MySQL中使用序列Sequence的方式 技术教程

在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_id_seq` (out sequence bigint)begin    insert into t_user_id_sequence (t_text) values ('a');    select last_insert_id() into sequence from dual;    delete from t_user_id_sequence;end &&delimiter ;

三、测试

call pro_user_id_seq(@value);select @value from dual;

使用存储过程的方式需要调用一次存储过程再进行赋值,稍微有点麻烦。

方式二、使用function

一、创建一个生成sequence的函数

delimiter &&create function user_id_seq_func() returns bigintbegin    declare sequence bigint;    insert into t_user_id_sequence (t_text) values ('a');    select last_insert_id() into sequence from dual;    delete from t_user_id_sequence;    return sequence;end &&delimiter ;

二、测试

select user_id_seq_func() from dual;  insert into t_user (user_id, user_name) values (user_id_seq_func(), 'java');select * from t_user;
你可能想看:
继续阅读本文相关话题
更多推荐
发表评论

共有[ 0 ]人发表了评论

🥰 😎 😀 😘 😱 🤨 🥵 😔 😤 😡 😭 🥱 🤡 ☠️ 💖 🤖 💢 💥

评论列表
暂无评论

暂时没有评论,期待您的声音!

品牌认证 W3C认证 MYSSL认证 TrustAsia 安全签章
扫码访问手机版
二维码图片