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

相关推荐

  • vlookup函数显示溢出怎么解决

    解决方法 1、一般来说,提示查找错误都是因为没有正确选择对象。 2、例如上述情况,输入的函数为“=VLOOKUP(F:F,A:B,2,0)”导致出错。 3、这时候,我们只需要将函数改为“=VLOOKUP(F2,A:B,2,0)”即可解决问题。 4、如果遇到这类问题,较好的方法就是删除该函数,按照正确…

    2022年9月22日
    6.2K00
  • 如何借助CSS 更好的控制定时器

    平时工作中很多场合都要用到定时器,比如延迟加载、定时查询等等,但定时器的控制有时候会有些许麻烦,比如鼠标移入停止、移出再重新开始。这次介绍几个借助 CSS 来更好的控制定时器的方法,一起了解一下吧,相信可以带来不一样的体验。 一、hover 延时触发 有这样一个场景,在鼠标停留在一个元素上1s后才触…

    2022年9月16日
    63800
  • MySQL中的查询优化器怎么用

    对于一个SQL语句,查询优化器先看是不是能转换成JOIN,再将JOIN进行优化 优化分为:1. 条件优化,2.计算全表扫描成本,3. 找出所有能用到的索引,4. 针对每个索引计算不同的访问方式的成本,5. 选出成本最小的索引以及访问方式 一、开启查询优化器日志 — 开启set optimizer_…

    2022年9月15日
    56900
  • windows中该内存不能为read如何解决

    该内存不能为read解决方法: 1、【win】+【R】,打开运行界面 2、在运行窗口中,输入【cmd】。打开管理员界面。 3、复制该代码并输入管理员界面中:【for %1 in (%windir%system32*.dll) do regsvr32.exe /s %1】 4、然后按下回车键【Ente…

    2022年9月2日
    57900
  • word竖排文字如何设置居中

    word竖排文字设置居中的方法: 1、首先我们点击顶部“插入”工具栏。 2、然后选择下面的“文本框” 3、接着选择“绘制竖排文本框” 4、这样画一个文本框,在其中打字就是竖排的了。 5、输入完成后,右键文本框,选择“设置文本框格式” 6、最后在其中选择“居中”并保存即可设置竖排文字居中。 感谢各位的…

    2022年9月1日
    1.2K00
  • 电脑蓝屏0x00000050如何解决

    解决方法: 方法一: 1、应用程序冲突是较好解决的。 2、首先我们重启电脑,然后在开机时按下键盘“F8”,再选择“疑难解答” 3、接着进入高级选项,在其中找到“启动设置” 4、再按下键盘“F4”,尝试进入安全模式。如果可以进入安全模式应该就是应用程序冲突问题。 5、进入安全模式后,只需要在其中将最近…

    2022年9月18日
    74600
  • SQL Server怎么操作Json格式字段数据

    1 json存储 在sqlserver 中存储json ,需要用字符串类型进行存储,一般用nvarchar()或 varchar()进行存储,不要用text进行存储,用text时候,json的函数不支持。 2 json操作 主要介绍5个函数: (1)openJson:打开Json字符串 (2)IsJ…

    2022年8月29日
    1.1K00
  • PHP程序中怎么运行Python脚本

    一、exec() 执行一个外部程序 exec ( string $command [, array &$output [, int &$return_var ]] ) : string 参数说明: command:要执行的命令,其中包括三个子串,名列前茅个子串为使用的当前系统的解释器…

    2022年9月10日
    73900
  • html是不是静态页面

    html是静态页面;html表示结构,css表示样式,由HTML与CSS制作的页面叫做静态页面,动态页面指的是动态数据的页面,而非模拟数据的页面,html网页当中的数据均为静态数据,当前端页面与后台整合之后,网页当中的数据是来源于数据库时,则称为动态页面。 本教程操作环境:windows10系统、H…

    2022年9月8日
    70400
  • windows xgp下载进度消失如何解决

    解决方法: 1、首先点击任务栏中的“Windows”打开开始菜单。 2、然后找到并打开其中的“Microsoft Store” 3、打开后,点击左下角的“库” 4、在其中就可以看到你获取的所有游戏。 5、最后点击右边的“下载”按钮就可以继续下载了。 目前xgp就是有这个bug,只能通过这种方法暂时解…

    2022年9月22日
    65700
注册PingCode 在线客服
站长微信
站长微信
电话联系

400-800-1024

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

分享本页
返回顶部