毕设系列之Mysql自定义流水号

很多时候在实际开发中,流水号往往不是123自增这么简单,特定字母加生成日期加几位数的序列号是普遍现象。本博客主要是通过函数和触发器结合生成自定义流水号并实现日期的更新。

前置条件:耐性80%;mysql5.7;Navicat for Mysql;了解mysql的函数及触发器语法

先建一个存储流水号格式的表LSH

在这里插入图片描述

编写流水号生成及日期更新getLSH()函数

BEGIN
  DECLARE str VARCHAR(20) DEFAULT '';
  SET @LSHName=name;
	SET @LSHHEAD=(select head from LSH where head=@LSHName);
	SET @LSHDATE=(select date from LSH where head=@LSHName);
	SET @NOW=(select DATE_FORMAT(SYSDATE(),"%Y%m%d") from dual);
if @LSHDATE<>@NOW THEN
		SET @LSHDATE=@NOW;
		update LSH set date=@LSHDATE;
		UPDATE LSH set number='1000';
ELSE 
		SET @LSHDATE=(select date from LSH where head=@LSHName);
END IF;
	update LSH set number=number+1 where head=@LSHName;
	SET @LSHNUM=(select number from LSH where head=@LSHName);
  SET str=CONCAT(@LSHHEAD,@LSHDATE,@LSHNUM);
  return str;
END

编写触发器

create trigger getloginlsh
before insert on login
begin 
set new.loginid=getLSH('LG');
end

或者
在这里插入图片描述
在这里插入图片描述

结尾

getLSH(“参数”)的参数要在LSH表中添加,插入的时候函数会比较每天的日期和LSH表的date字段,不一样则将所有date字段改为当天日期,并将所有number字段初始化为1000。聪明的盆友可能会想到,可以将其他表要初始化的东西放到这个函数里以前初始化,怎么实现呢,下回分解~~

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值