mysql实现sequence多线程序列自增

浏览:2149 发布日期:2017/07/10 分类:php 关键字:

     在mysql里,没有sequence,sequence是什么呢,什么情况下能使用?

sequence的作用主要是做表的序列用,一般做自动生成编号的序列,自动生成编号是在打开页面时候就开始调用mysql里的序列,并且实现自增1。为什么要在访问的时候就形成了序列了呢?

这个也是根据业务需求来定的,如果用户是多用户多态电脑同时登录、同事创建记录,若使用是mysql数据库自带的 数字主键加1的方式,那么会照成序列号相同的情况。sequence是为了实现多线程序列的基础。

下面是创建sequence表的方法和代码。


DROP TABLE IF EXISTS bwwl_sequence; 
CREATE TABLE bwwl_sequence ( 
     NAME VARCHAR(50) NOT NULL, 
     current_value INT NOT NULL, 
     increment INT NOT NULL DEFAULT 1, 
     PRIMARY KEY (NAME) 
) ENGINE=INNODB; 

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 bwwl_sequence
          WHERE NAME = seq_name; 
     RETURN VALUE; 
END
$ 
DELIMITER ; 

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 bwwl_sequence
          SET current_value = current_value + increment 
          WHERE NAME = seq_name; 
     RETURN currval(seq_name); 
END
$ 
DELIMITER ; 

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 bwwl_sequence
          SET current_value = VALUE 
          WHERE NAME = seq_name; 
     RETURN currval(seq_name); 
END
$ 
DELIMITER ; 


INSERT INTO bwwl_sequence VALUES ('TestSeq', 0, 1);

SELECT SETVAL('TestSeq', 1);

SELECT CURRVAL('TestSeq');

SELECT NEXTVAL('TestSeq')


本文为原创:如需转载请加上本文连接,谢谢!

本文链接  http://www.maotouying.org/index.php/post/35.html

作者QQ: 770637705


评论(212 相关
回复 聚币网 2018-02-03
sequence表
回复 武胜 2018-03-26
这篇文章写得很好。
文章很好值得一看。
文章不错非常喜欢
博主分享的不错的啦,学习了不少,文章很好收获很大
文章不错 点赞支持一下
文章不错 支持一下 点赞
很好 支持下学习到了
非常不错 很好的网站
内容精彩 学习到了
很好 内容精彩 值得学习分享下
很好 值得学习分享 学习到了
不错 支持下 学习到了
内容精彩 值得学习分享 不错
内容精彩 值得学习分享下
非常精彩 值得学习 不错
很好 支持下 学习了
非常不错 精彩 支持下
很好 支持下
很好 学习了 支持下
非常不错 学习到了
很好 学习了 不错
51561561@qq.com
很精彩 值得学习分享
很精彩 学习了 不错
支持下 不错学习了
很棒 学习到了
内容精彩 值得学习分享
非常精彩 值得学习分享
非常不错 学习了
非常好 学习了 支持下 精彩
支持下 非常好
sequence表
很精彩 值得学习分享
很精彩 学习了 支持下
非常精彩 学习到了
不错 值得学习分享
内容精彩 很好 学习了
内容精彩 学习了
很好 学习支持下
精彩 学习了 很好
很好 学习了 不错
精彩 值得学习分享
非常好 学习了 不错
支持下 非常好 不错
内容精彩 不错 很好
不错 内容精彩
不错 支持下 非常好 不错
学习了 很好
不错 学习了 很好
非常不错 学习了 精彩
不错 很好
非常不错 学习了 支持下
非常精彩 学习了
内容不错 学习了 很好
非常精彩 学习了 支持下
非常精彩 学习了 很好
非常精彩 不错 学习了
内容很好 学习了 不错
支持下 非常好 学习到了
很精彩 不错
内容精彩 学习了 不错
很棒 学习了 支持下
支持下 学习了 还不错
很棒 支持下 学习了
很好 学习了 不错
非常精彩 学习了 不错
不错 学习到了 非常好
不错 学习支持下 很好
很好 支持下 不错
非常棒 学习了
精彩 不错 学习了
很精彩 学习了 不错
内容很棒 学习了 非常好
很精彩 不错 支持下
不错 学习了
学习了 支持下 很好
很棒 支持下 不错
非常不错 学习了 很好
很精彩 学习了 不错
不错 非常好 学习了
很好 学习了 支持下
内容精彩 值得学习下 很好
很棒 支持了 不错
很好 非常不错 精彩
很精彩 不错 学习了
非常精彩 学习了
很好 精彩 学习了
非常棒 支持下 学习了
学习到了 支持下
很棒 支持下 学习了
不错 支持下 很好 学习了
内容很棒 支持下 学习了
很精彩 学习了 不错
很精彩 学习到了 不错
很好 支持下 学习到了
非常棒 支持下 很好
内容精彩 支持下 学习了
很好 精彩 学习了 不错
不错 支持下 很好

发表评论

必填

选填

选填