原文地址:https://blog.csdn.net/czbqoo01/article/details/70148516

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

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

说明:

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

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 声明变量
 
  1.  
  2. DELIMITER //
  3. create function nextval(str varchar(50)) returns integer
  4. begin
  5. declare i int;
  6. set i=(select start_value from emp_seq where name=str);
  7. update emp_seq
  8. set start_value=i+increment_value
  9. where name=str;
  10. return i;
  11. end;
  12. //
  13.  

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

说明:

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

 
  1. DELIMITER ;
  2.  

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的更多相关文章

  1. mysql 如何设置自动增长序列 sequence(一)

    背景:由于项目需要,必须用mysql设置主键自增长,而且想用字符串的.经过上网查找并且实验,终于做出了一套方案.现在就共享给大家! 解决思路:由于mysql不带sequence,所以要手写的,创建一张 ...

  2. oracle设置自动增长序列

    我们在用MS SQL Server时,可以为表的主键设置为自动加1的效果;但是在Oracle当中,我们是无法直接设置一个字段为自动加1,需要先建立一个Sequence,然后为这个表创建一个Trigge ...

  3. PowerDesigner 15设置mysql主键自动增长及基数

    PowerDesigner 15设置mysql主键自动增长及基数 1.双击标示图,打开table properties->columns,  如图点击图标Customize Columns an ...

  4. mysql 约束条件 auto_increment 自动增长目录

    mysql 约束条件 auto_increment 自动增长 mysql 约束条件 auto_increment 自动增长起始值 布长 起始偏移量 mysql 约束条件 auto_increment ...

  5. mysql 约束条件 auto_increment 自动增长起始值 布长 起始偏移量

    我们指定一个字段为自动增长,他默认从1开始自动增长,默认值为1,每次增长为1,步长为1 模糊查询 like % 代表任意个数字符 任意字符长度 查看mysql正在使用变量 show variables ...

  6. mysql 约束条件 auto_increment 自动增长

    约束字段为自动增长,被约束的字段必须同时被key约束 id自动增长,每插入一条记录,自动增长 创建一张表 t20 id 字段设置为 不为空 唯一 自动增长 mysql)); Query OK, row ...

  7. 《SQL Server企业级平台管理实践》读书笔记——SQL Server如何设置自动增长和自动收缩项

    SQL Server允许用户设置数据库初始值和最大值,可以通过自动增长或者自动收缩进行配置.通过这些配置,我们可以防止数据库空间问题而导致的应用程序修改失败或者SQL Server磁盘空间耗尽的事情发 ...

  8. mysql——主键自动增长&唯一索引

    首先说一下主键和唯一索引的区别 主键:一个数据库的一张表有且仅有一个主键,而且主键不能重复 唯一索引:一个数据库的一张表上唯一索引可以有多个,只是所在唯一索引上的值不能重复,这一点和主键一样 下面我们 ...

  9. mysql 约束条件 auto_increment 自动增长 创建表时设置自增字段

    auto_increment mysql) )auto_increment; Query OK, rows affected (0.01 sec) mysql> show create tabl ...

随机推荐

  1. windows10安装tensorflow的gpu版本(pip3安装方式)

    前言: TensorFlow 有cpu和 gpu两个版本:gpu版本需要英伟达CUDA 和 cuDNN 的支持,cpu版本不需要:本文主要安装gpu版本. 1.环境 gpu:确认你的显卡支持 CUDA ...

  2. EF GroupBy 根据key 分组 再把key求和(取决于每条数据中 arr的条数) arr 中有多少条数据 就把多少个key 加起来

    List<A> alist = new List<A>{ ,b=,c=,d=,e=}, ,b=,c=,d=,e=}, ,b=,c=,d=,e=}, ,b=,c=,d=,e=}, ...

  3. Extending a logical volume in a virtual machine running Red Hat or Cent OS (1006371)

    Purpose This article provides steps for extending the root partition residing in a logical volume cr ...

  4. go test命令參数问题

    go test命令參数问题 在使用go test对go代码进行单元測试的时候,遇到关于命令參数的问题.google了一下,没有找到非常好的说明,其实就是一些细节而已. 问题是这种,在进行单元測试的时候 ...

  5. git server 搭建指南

    搭建git服务器的经验总结 一: Server端的设置 1. 安装 git, git-core 2. 安装 ssh-server. (代码上传通道) 3. 创建git 用户 指定其目录 和所在组 4. ...

  6. JAVA Socket编程和C++ Socket编程有什么不同

    原文链接: http://zhidao.baidu.com/link?url=16TEzhom2Nr8x1_2uTRp-e2pgZRgS5nW5ywtRX2XLHbtLOG8btif5DTyP85jf ...

  7. 如何在open xml excel 中存储自定义xml数据?

    如何在open xml excel 中存储自定义xml数据? 而且不能放在隐藏的cell单元格内,也不能放在隐藏的sheet内,要类似web网站的Application变量,但还不能是VBA和宏之类的 ...

  8. SNF微信公众号客户端演示-微信开发客户端能干什么

    关注测试微信号: 关注后菜单页面如下: 一.扫描二维码进行订单查询演示 1.点击菜单“软件产品”->选择“扫描查询” 2.扫描如下二维码进行订单查询演示. 3.扫描结果如下: 二.微信“输入订单 ...

  9. EndNote 输出样式模板(根据国家标准制订)

    EndNote 输出样式模板(根据国家标准制定)   EndNote 相当于一个数据库,将添加/导入的文献存档.需要引用文献的时候就从中选择一个插入到文档中,EndNote 会自动给你编号.在文档末尾 ...

  10. flowable 中task的相关操作

    1 获取任务列表 1)获取候选人的任务列表 TaskService taskService = processEngine.getTaskService(); List<Task> tas ...