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)) RETURNSINTEGER LANGUAGESQL DETERMINISTIC CONTAINSSQL SQLSECURITYDEFINER COMMENT'' BEGIN DECLAREvalueINTEGER; SETvalue=0; SELECTcurrent_valueINTOvalue FROMsequence WHEREname=seq_name; RETURNvalue; END $ DELIMITER;
3.创建–取下一个值的函数
DROPFUNCTIONIFEXISTSnextval; DELIMITER$ CREATEFUNCTIONnextval(seq_nameVARCHAR(50)) RETURNSINTEGER LANGUAGESQL DETERMINISTIC CONTAINSSQL SQLSECURITYDEFINER COMMENT'' BEGIN UPDATEsequence SETcurrent_value=current_value+increment WHEREname=seq_name; RETURNcurrval(seq_name); END $ DELIMITER;
4.创建–更新当前值的函数
DROPFUNCTIONIFEXISTSsetval; DELIMITER$ CREATEFUNCTIONsetval(seq_nameVARCHAR(50),valueINTEGER) RETURNSINTEGER LANGUAGESQL DETERMINISTIC CONTAINSSQL SQLSECURITYDEFINER COMMENT'' BEGIN UPDATEsequence SETcurrent_value=value WHEREname=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实现自增序列的示例代码的文章就介绍到这了,更多相关mysql自增序列内容请搜索毛票票以前的文章或继续浏览下面的相关文章希望大家以后多多支持毛票票!