三位数自动递增编号函数_mysql 自动生成编号函数

本文介绍了如何在MySQL中创建一个自定义函数,用于生成格式为AA-yyyy-MM-dd-序号的自动递增序列号。通过建表和函数定义,实现了在保存表数据时动态生成编号,确保其唯一性。
摘要由CSDN通过智能技术生成

根据需求,保存表数据时需要自动生成一个编号,格式如:AA-2020-03-31-0001  (AA-yyyy-MM-dd-序号)。数据库用的mysql,所以创建一个mysql函数。

1、建表:

create table sys_sequence_number(

sequenceType varchar(30) not null,

val int not null,

len int not null

);

2、建函数

DELIMITER $$

DROP FUNCTION IF EXISTS getSequenceNo $$

create function getSequenceNo(pSequenceType varchar(30),pLen int) returns varchar(60)

begin

declare strZero varchar(20) default '00000000000000000000';

declare strSequenceNo varchar(60) default '';

declare iVal int default 0;

declare iLen int default 0;

declare c int default 0;

select count(1) into c from sys_sequence_number where sequenceType=pSequenceType;

if(c<1)

then

insert into sys_sequence_number(sequenceType,val,len)

values(pSequenceType,0,pLen);

end if;

update sys_sequence_number set val=val+1 where sequenceType=pSequenceType;

select val,len into iVal,iLen from sys_sequence_number where sequenceType=pSequenceType;

set strSequenceNo=concat(substr(strZero,1,iLen-length(iVal)),convert(iVal,char(10)));

return concat(concat(pSequenceType,'-'),strSequenceNo);

end $$

DELIMITER ;

3、在mysql上执行测试: select  getSequenceNo(concat('AA-',date_format(now(), '%Y-%m-%d')),4)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值