当前位置:数据库 > > 正文

mysql自增长语句(mysql实现自增序列的示例代码)

时间:2021-10-24 10:17:31类别:数据库

mysql自增长语句

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

1.创建sequence表

  • ?
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 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.创建–取当前值的函数

  • ?
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 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.创建–取下一个值的函数

  • ?
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 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.创建–更新当前值的函数

  • ?
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 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

  • ?
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • INSERT INTO sequence VALUES ('testSeq', 0, 1);-- 添加一个sequence名称和初始值,以及自增幅度
  •  
  • SELECT SETVAL('testSeq', 10);-- 设置指定sequence的初始值
  •  
  • SELECT CURRVAL('testSeq');-- 查询指定sequence的当前值
  •  
  • SELECT NEXTVAL('testSeq');-- 查询指定sequence的下一个值
  • 到此这篇关于mysql实现自增序列的示例代码的文章就介绍到这了,更多相关mysql 自增序列内容请搜索开心学习网以前的文章或继续浏览下面的相关文章希望大家以后多多支持开心学习网!

    原文链接:https://blog.csdn.net/xubenxismile/article/details/103629359

    上一篇下一篇

    猜您喜欢

    热门推荐