mysql实现自增序列的方法
这篇文章主要为大家展示了“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实现自增序列的方法”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注亿速云行业资讯频道!
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。