分享

Mysql实现自增长编号,日期 序列,序列定时归零

 昵称6QyNm 2017-10-03







表示例:

其中,name为编号名、value为编号值、next为递增值

2、新建一个事件,定时清空表sequence中的value值
定义:
UPDATE sequence SET value=0 WHERE name='trans_no'
计划,设置每天19点01分清零:

3、新建一个函数next_trans_num(),每次递增获取sequence中value值
定义,其中last_insert_id()函数为mysql自带函数,获取该表中最后更新的值,seq_name为函数参数,确定调用哪个生成规则
begin
 UPDATE sequence SET value=last_insert_id(value+next) WHERE name=seq_name;
 RETURN last_insert_id();
end

3、再新建一个函数get_trans_num(),获取日期+指定长度序列的编号
定义,DECLARE getval VARCHAR(24),申明变量getval,SET getval =(),将结果赋值给getval:
BEGIN
 DECLARE getval VARCHAR(24);
 SET getval = (SELECT CONCAT(DATE_FORMAT(NOW(), '%Y%m%d%H%i%s'),  LPAD((SELECT next_trans_num('trans_no')), 10, '0')));
RETURN getval;
END

4、在sql查询中运行函数get_trans_num(),即可得到逾期的编号:
SELECT get_trans_num();

5、向表中插入该编号:













    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多