当前位置: 首页 > 编程笔记 >

mysql实现自增序列的示例代码

诸葛文博
2023-03-14
本文向大家介绍mysql实现自增序列的示例代码,包括了mysql实现自增序列的示例代码的使用技巧和注意事项,需要的朋友参考一下

1.创建sequence表

CREATE TABLE `sequence` (
 `name` varchar(50) COLLATE utf8_bin NOT NULL COMMENT '序列的名字',
 `current_value` int(11) NOT NULL COMMENT '序列的当前值',
 `increment` int(11) NOT NULL DEFAULT '1' COMMENT '序列的自增值',
 PRIMARY KEY (`name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

2.创建–取当前值的函数

DROP FUNCTION IF EXISTS currval; 
DELIMITER $ 
CREATE FUNCTION currval (seq_name VARCHAR(50)) 
   RETURNS INTEGER
   LANGUAGE SQL 
   DETERMINISTIC 
   CONTAINS SQL 
   SQL SECURITY DEFINER 
   COMMENT ''
BEGIN
   DECLARE value INTEGER; 
   SET value = 0; 
   SELECT current_value INTO value 
     FROM sequence
     WHERE name = seq_name; 
   RETURN value; 
END
$ 
DELIMITER ; 

3.创建–取下一个值的函数

DROP FUNCTION IF EXISTS nextval; 
DELIMITER $ 
CREATE FUNCTION nextval (seq_name VARCHAR(50)) 
   RETURNS INTEGER 
   LANGUAGE SQL 
   DETERMINISTIC 
   CONTAINS SQL 
   SQL SECURITY DEFINER 
   COMMENT '' 
BEGIN 
   UPDATE sequence 
     SET current_value = current_value + increment 
     WHERE name = seq_name; 
   RETURN currval(seq_name); 
END 
$ 
DELIMITER ; 

4.创建–更新当前值的函数

DROP FUNCTION IF EXISTS setval; 
DELIMITER $ 
CREATE FUNCTION setval (seq_name VARCHAR(50), value INTEGER) 
   RETURNS INTEGER 
   LANGUAGE SQL 
   DETERMINISTIC 
   CONTAINS SQL 
   SQL SECURITY DEFINER 
   COMMENT '' 
BEGIN 
   UPDATE sequence 
     SET current_value = value 
     WHERE name = seq_name; 
   RETURN currval(seq_name); 
END 
$ 
DELIMITER ; 

5.测试添加实例 执行sql

INSERT INTO sequence VALUES ('testSeq', 0, 1);-- 添加一个sequence名称和初始值,以及自增幅度
 
SELECT SETVAL('testSeq', 10);-- 设置指定sequence的初始值
 
SELECT CURRVAL('testSeq');-- 查询指定sequence的当前值
 
SELECT NEXTVAL('testSeq');-- 查询指定sequence的下一个值

到此这篇关于mysql实现自增序列的示例代码的文章就介绍到这了,更多相关mysql 自增序列内容请搜索小牛知识库以前的文章或继续浏览下面的相关文章希望大家以后多多支持小牛知识库!

 类似资料:
  • 本文向大家介绍SpringBoot实现子类的反序列化示例代码,包括了SpringBoot实现子类的反序列化示例代码的使用技巧和注意事项,需要的朋友参考一下 目标 在SpringBoot接口中,我们一般用@RequestBody类注解需要反序列化的对象,但是当存在多个子类的情况下,常规的反序列化不能满足需求,比如: 我们有一个类Exam用于表示一张试卷: 这里Question比较特殊,Questio

  • 本文向大家介绍react+ant design实现Table的增、删、改的示例代码,包括了react+ant design实现Table的增、删、改的示例代码的使用技巧和注意事项,需要的朋友参考一下 本人小白一名,第一次学习react ,该资料为本人原创,采用的是react+ant design的Tabled的一个小demo,暂时只实现了增加,删除单行,多行删除有Bug,查看详情,呕心沥血耗时一周

  • 本文向大家介绍python实现自动打卡的示例代码,包括了python实现自动打卡的示例代码的使用技巧和注意事项,需要的朋友参考一下 自己也百度了一下,然后写的,分为了三个部分,见三段代码 代码:主程序代码 以上就是python实现自动打卡的示例代码的详细内容,更多关于python 自动打卡的资料请关注呐喊教程其它相关文章!

  • 本文向大家介绍C#实现的json序列化和反序列化代码实例,包括了C#实现的json序列化和反序列化代码实例的使用技巧和注意事项,需要的朋友参考一下

  • 本文向大家介绍go实现冒泡排序的示例代码,包括了go实现冒泡排序的示例代码的使用技巧和注意事项,需要的朋友参考一下 冒泡排序: (Bubble Sorting)基本思想是通过对待排序序列从后向前(从下标较大的元素开始)以此比较相邻元素的排序码,若发现逆序则交换,使排序码较小的元素逐渐从后补移向前部(从下标较大的单元移向单位较小的单元),就像水底的气泡一样逐渐向上冒。 因为排序的过程中,各元素不断的

  • 本文向大家介绍Oracle中使用触发器(trigger)和序列(sequence)模拟实现自增列实例,包括了Oracle中使用触发器(trigger)和序列(sequence)模拟实现自增列实例的使用技巧和注意事项,需要的朋友参考一下 问题:在SQL Server数据库中,有自增列这个字段属性,使用起来也是很方便的。而在Oracle中却没有这个功能,该如何实现呢? 答:在Oracle中虽然没有自增

  • 如何使用firebase作为后端服务生成一个自定义的自动增量id有点困惑。

  • 本文向大家介绍Oracle 创建主键自增表示例代码,包括了Oracle 创建主键自增表示例代码的使用技巧和注意事项,需要的朋友参考一下 前言 本篇文章给大家主要介绍的是在oracle中如果创建自增长表的方法,这里要用到序列。下面话不多说,我们来看示例代码。 示例代码 注意:触发器是非必须的,可以从业务上严格要求指定插入值。 注意oracle限制对象名的字符长度不能超过30个字符,所以表名要控制在一