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

本文介绍如何使用SQL创建序列表、定时清零机制及递增获取自增编号的函数,实现高效且灵活的自增编号管理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、新建表sequence,存放序列规则,方便以后设置多个不同规则编号,包括编号名、编号值、递增值
设计表:







表示例:

其中,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、向表中插入该编号:














评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Firechou

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值