MySQL数据库中怎么实现序列自增功能

43次阅读
没有评论

共计 1666 个字符,预计需要花费 5 分钟才能阅读完成。

自动写代码机器人,免费开通

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;

MySQL 数据库中怎么实现序列自增功能

2、创建 ndash; 取当前值的函数

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、创建 ndash; 取下一个值的函数

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 ;

MySQL 数据库中怎么实现序列自增功能

4、创建 ndash; 更新当前值的函数

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 ;

MySQL 数据库中怎么实现序列自增功能

5、测试

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

MySQL 数据库中怎么实现序列自增功能

看完上述内容,你们掌握 MySQL 数据库中怎么实现序列自增功能的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注丸趣 TV 行业资讯频道,感谢各位的阅读!

向 AI 问一下细节

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-12-04发表,共计1666字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)