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、测试
INSERTINTOsequenceVALUES('hwb_Seq',0,1);--添加一个sequence名称和初始值,以及自增幅度SELECTSETVAL('hwb_Seq',10);--设置指定sequence的初始值SELECTCURRVAL('hwb_Seq');--查询指定sequence的当前值SELECTNEXTVAL('hwb_Seq');--查询指定sequence的下一个值
看完上述内容,你们掌握MySQL数据库中怎么实现序列自增功能的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注亿速云行业资讯频道,感谢各位的阅读!
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。