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;

到此,关于“MySQL中怎么使用序列Sequence的方式”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注亿速云网站,小编会继续努力为大家带来更多实用的文章!

文章标题:MySQL中怎么使用序列Sequence的方式,发布者:亿速云,转载请注明出处:https://worktile.com/kb/p/25027

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
亿速云亿速云认证作者
上一篇 2022年9月15日 上午1:42
下一篇 2022年9月15日 上午1:43

相关推荐

  • windows中group policy client服务未能登录如何解决

    解决方法: 1、首先按下快捷键“win+r”打开运行,输入“regedit”。 2、然后选择选项栏:HKEY_CURRENT_USER并右击,选择“权限”。 3、然后点击安全下面的“添加”。 4、之后可以登录你的账号,没有改过的话都是“administrator”。 5、最后将权限下面的各项权限勾选…

    2022年8月29日
    33600
  • 电脑蓝屏代码0x00000023如何解决

    解决方法: 方法一: 1、首先可以重启电脑,然后按住键盘的“F8”,不松手直到出现其他界面。 2、如果可以使用鼠标就点击“最后一次正确的配置”回车进入,如果不能的话就使用键盘的方向键。 3、要是使用这种方法也进不去系统,那就可能是磁盘出现了问题,需要修复磁盘。 方法二: 1、再次使用上面的方法进入这…

    2022年9月16日
    19000
  • 如何进行CaptureFramework框架分析

    一、背景 应用服务监控是智能运维系统的重要组成部分。在UAV系统中,中间件增强框架(MOF)探针提供了应用画像及性能数据收集等功能,其中数据收集功能主要采集四类数据:实时数据、画像数据、调用链接数据生成以及线程数据分析数据。为实现实时数据采集,UAVStack设计了CaptureFramework框…

    2022年9月5日
    15800
  • Google Chrome 85修复WebGL代码执行漏洞的示例分析

    Google修复了Google Chrome网页浏览器的WebGL(Web Graphics Library)组件中的一个释放后重用漏洞,成功利用该漏洞,攻击者可在浏览器的进程的上下文中执行任意代码。 WebGL是一个JavaScript API,兼容性浏览器使用该API,而不使用插件渲染交互性2D…

    2022年9月26日
    22100
  • Apache Flink未授权访问远程代码命令执行的复现

    Apache Flink未授权访问-远程代码命令执行漏洞复现 Apache Flink Dashboard默认没有用户权限认证。攻击者可以通过未授权的Flink Dashboard控制台,直接上传木马jar包,可远程执行任意系统命令获取服务器权限,风险极大。 二、影响版本 Apache Flink …

    2022年9月10日
    1.0K00
  • Vue常见报错问题怎么解决

    一、报错结构 报错信息一般会包含这几部分:错误类型、错误位置、错误描述、错误规则和问题数量。 如上图: 报错类型为编译错误; 错误位置在D:myelsrcviewsadminAdminView.vue中的第四行第2个字符;(报错位置不一定每次都是准确的,但是可以根据提示缩小范围) 错误描述 当前错误…

    2022年9月20日
    54500
  • 怎么使用Performance监控前端性能

    Performance.now Performance是一个做前端性能监控离不开的API,较好在页面完全加载完成之后再使用,因为很多值必须在页面完全加载之后才能得到。最简单的办法是在window.onload事件中读取各种数据。 performance.now()方法返回一个精确到毫秒的 DOMHi…

    2022年8月29日
    59400
  • 知识库是什么

    知识库是关于产品、服务、部门或主题的自助式在线信息库。为了让大家更好的了解知识库是什么这个问题,下面我们将会围绕:1、企业知识库是什么;2、企业为什么需要知识库;3、知识库的好处有哪些;三点进行展开。 知识库中的数据可以来自任何地方。通常,精通相关主题的贡献者会给知识库增加或扩展内容。内容可以是从你…

    2022年3月18日
    30200
  • windows office365如何取消自动续费

    office365取消自动续费的方法: 1、首先进入office365,然后点击右上角的头像点击“我的Microsoft账户”。 2、然后在选项中点击“服务和订阅”。 3、点击office365下面的“管理”选项。 4、最后可以在帮助下方点击“停止自动续订或取消订阅”。 到此,关于“windows …

    2022年9月21日
    67100
  • 如何深度分析Nazar 组件

    6:22 AM 11/7/2012 conficker still on target 6:18 AM 11/7/2012 checking logs – we are clean 8:16 PM 7/2/2012 – BOOM!, got the callback 这些是方…

    2022年9月15日
    21000
站长微信
站长微信
电话联系

400-800-1024

工作日9:30-21:00在线

分享本页
返回顶部