MySQL如何设置自动增长序列SEQUENCE的方法

 更新时间:2021年12月22日 10:25:26   作者:ReaderWriter  
本文主要介绍了MySQL如何设置自动增长序列SEQUENCE的方法,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文主要介绍了MySQL如何设置自动增长序列 SEQUENCE,具体如下:

解决思路:由于mysql不带sequence,所以要手写的,创建一张储存sequence的表(emp_seq),然后手动插入一条数据 ,最后自定义一个函数来处理要增长的值。

1.创建表emp_seq,用来存放sequence值:

说明:

  • name这个列,是为了让函数更好的通过条件来进行DML操作,
  • start_value,储存了自增序列开始时的值,
  • increment_value,存储了自增序列步进的值。
create table emp_seq (
	name varchar(50) not null primary key,
	start_value int not null,
	increment_value int not null default 1
);

2.手动插入数据:

说明:

  • ‘empno'见名之意,
  • 第一个1,说明序列从1开始,
  • 第二个1,说明序列每次增长1。
insert into emp_seq values('empno',1,1);

3.定义函数 nextval:

说明:

  • DELIMITER // ->定义语句结束符,其中//前面有一个空格,平常我们都是用分号;作为语句结束符。但是创建的函数中,是多条语句组合而成,每条语句也是使用分号;作为语句结束符,若没有重新定义语句结束符,数据库会认为declare i int;这里的分号是结束符,会报错。所以在这我们重新定义一个语句结束符//,直到end;//这里才会结束整段代码。
  • function 自定义函数 (user-defined function UDF),它是对MySQL功能的一个扩展,
  • declare 声明变量
DELIMITER //
create function nextval(str varchar(50)) returns integer
begin
	declare i int;
	set i=(select start_value from emp_seq where name=str);
	update emp_seq
		set start_value=i+increment_value
	where name=str;
return i;
end;
//
 

4.恢复默认的语句结束符:

说明:

  • DELIMITER ; ->定义语句结束符(其中delimiter后跟了一个空格一个分号),也就是把分号作为语句结束符。因为上面已经把函数建立好了,所以在这里重新定义结束符,为的是以后更方便的执行SQL语句,平常我们使用SQL语句,习惯用分号作为结束符的。
DELIMITER ;

5.为了更方便的执行SQL命令,我把这些代码复制到记事本中,并把文件存到D盘根目录下,改名为emp_seq.sql

 

6.执行外部SQL脚本命令

若没有提示,说明建立成功。如何执行外部SQL脚本命令,客官可移步:MySQL执行外部sql脚本文件的命令

 

7.成功导入sql脚本后,那咱们就需要验证一下,进入mysql,并进入数据库,我这里是jsd170101


OK,连续执行sql语句获取序列,从上图清楚的看到,结果从1开始,每次自增1

8.下面说说如何应用在DML语句中

我的数据库里已有empno=6的数据,这里我让start_value增长到7,再插入一条信息:

查看下结果:

到此这篇关于MySQL如何设置自动增长序列SEQUENCE的方法的文章就介绍到这了,更多相关MySQL 自动增长序列SEQUENCE内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Java三个类加载器及它们的相互关系

    Java三个类加载器及它们的相互关系

    Java在需要使用类别的时候,才会将类别加载,Java的类别载入是由类别载入器(Class loader)来达到的,预设上,在程序启动之后,主要会有三个类别加载器,文中详细介绍了这三个类加载器,需要的朋友可以参考下
    2021-06-06
  • springBoot mybatis 包扫描实例

    springBoot mybatis 包扫描实例

    这篇文章主要介绍了springBoot mybatis 包扫描实例,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-07-07
  • Java实战之课程在线学习系统的实现

    Java实战之课程在线学习系统的实现

    本文将采用SpringBoot+Spring+Mybatis+Thyeleaf实现一个课程在线学习系统,采用SpringBoot框架实现 前台模板用的thymeleaf数据库层采用mybatis框架注解模式,感兴趣的可以了解一下
    2022-04-04
  • java怎么连接并访问activemq

    java怎么连接并访问activemq

    这篇文章主要介绍了java怎么连接并访问activemq,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-07-07
  • Java的锁机制:synchronized和CAS详解

    Java的锁机制:synchronized和CAS详解

    这篇文章主要介绍了Java的锁机制synchronized和CAS详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-09-09
  • 学习C语言对后期java有帮助吗

    学习C语言对后期java有帮助吗

    在本篇文章里小编给大家整理的是一篇关于学习C语言对后期java有帮助吗的基础文章,有兴趣的朋友们可以参考下。
    2020-11-11
  • Spring Boot 4.0对于Java开发的影响和前景

    Spring Boot 4.0对于Java开发的影响和前景

    探索Spring Boot 4.0如何彻底革新Java开发,提升效率并开拓未来可能性!别错过这篇紧凑的指南,它带你领略Spring Boot的强大魅力和潜力,准备好了吗?
    2024-02-02
  • Java基础总结之Thymeleaf详解

    Java基础总结之Thymeleaf详解

    Thymeleaf是一种现代的基于服务器端的Java模板引擎技术,也是一个优秀的面向Java的XML、XHTML、HTML5页面模板,它具有丰富的标签语言、函数和表达式,在使用Spring Boot框架进行页面设计时,一般会选择Thymeleaf模板,需要的朋友可以参考下
    2021-05-05
  • Java中的ProcessBuilder类详细解析

    Java中的ProcessBuilder类详细解析

    这篇文章主要介绍了Java中的ProcessBuilder类详细解析,ProcessBuilder类是J2SE 1.5在java.lang中新添加的一个新类,此类用于创建操作系统进程,它提供一种启动和管理进程的方法,需要的朋友可以参考下
    2024-01-01
  • java中ArrayList和LinkedList的区别详解

    java中ArrayList和LinkedList的区别详解

    这篇文章主要介绍了java中ArrayList和LinkedList的区别详解,帮助大家更好的理解和使用Java,感兴趣的朋友可以了解下
    2021-01-01

最新评论