这篇文章主要为大家展示了“mysql实现自增序列的方法”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“mysql实现自增序列的方法”这篇文章吧。

1.创建sequence表

CREATETABLE`sequence`(`name`varchar(50)COLLATEutf8_binNOTNULLCOMMENT'序列的名字',`current_value`int(11)NOTNULLCOMMENT'序列的当前值',`increment`int(11)NOTNULLDEFAULT'1'COMMENT'序列的自增值',PRIMARYKEY(`name`))ENGINE=InnoDBDEFAULTCHARSET=utf8COLLATE=utf8_bin;2.创建–取当前值的函数

DROPFUNCTIONIFEXISTScurrval;DELIMITER$CREATEFUNCTIONcurrval(seq_nameVARCHAR(50))RETURNSINTEGERLANGUAGESQLDETERMINISTICCONTAINSSQLSQLSECURITYDEFINERCOMMENT''BEGINDECLAREvalueINTEGER;SETvalue=0;SELECTcurrent_valueINTOvalueFROMsequenceWHEREname=seq_name;RETURNvalue;END$DELIMITER;3.创建–取下一个值的函数

DROPFUNCTIONIFEXISTSnextval;DELIMITER$CREATEFUNCTIONnextval(seq_nameVARCHAR(50))RETURNSINTEGERLANGUAGESQLDETERMINISTICCONTAINSSQLSQLSECURITYDEFINERCOMMENT''BEGINUPDATEsequenceSETcurrent_value=current_value+incrementWHEREname=seq_name;RETURNcurrval(seq_name);END$DELIMITER;4.创建–更新当前值的函数

DROPFUNCTIONIFEXISTSsetval;DELIMITER$CREATEFUNCTIONsetval(seq_nameVARCHAR(50),valueINTEGER)RETURNSINTEGERLANGUAGESQLDETERMINISTICCONTAINSSQLSQLSECURITYDEFINERCOMMENT''BEGINUPDATEsequenceSETcurrent_value=valueWHEREname=seq_name;RETURNcurrval(seq_name);END$DELIMITER;5.测试添加实例 执行sql

INSERTINTOsequenceVALUES('testSeq',0,1);--添加一个sequence名称和初始值,以及自增幅度SELECTSETVAL('testSeq',10);--设置指定sequence的初始值SELECTCURRVAL('testSeq');--查询指定sequence的当前值SELECTNEXTVAL('testSeq');--查询指定sequence的下一个值

以上是“mysql实现自增序列的方法”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注亿速云行业资讯频道!