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自增序列内容请搜索毛票票以前的文章或继续浏览下面的相关文章希望大家以后多多支持毛票票!
热门推荐
10 小红书平安祝福语简短
11 生日祝福语大全女孩简短
12 收生日红包祝福语 简短
13 领证幽默祝福语简短
14 法考面试祝福语简短
15 老哥出门祝福语简短语
16 送灯祝福语简短独特
17 幼儿狗年祝福语大全简短
18 好听的元旦简短祝福语