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

网友投稿 812 2022-09-07


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

目录1.创建表emp_seq,用来存放sequence值:2.手动插入数据:3.定义函数 nextval:4.恢复默认的语句结束符:6.执行外部SQL脚本命令7.成功导入sql脚本后,那咱们就需要验证一下,进入mysql,并进入数据库,我这里是jsd170101 8.下面说说如何应用在DML语句中

本文主要介绍了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功能的一个扩展,

decWXFkMmdIlare 声明变量

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

WXFkMmdI


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:妙啊,这14个经典的 Python 代码模块真香(实在是妙啊)
下一篇:30个顶级Python库:用于深度学习、自然语言处理和计算机视觉
相关文章

 发表评论

暂时没有评论,来抢沙发吧~