当前位置: 首页 > news >正文

MySQL 按日期流水号 条码 分布式流水号

有这样一个场景,有多台终端,要获取唯一的流水号,流水号格式是 日期+0001形式,使用MySQL的存储过程+全局锁实现这个需求。
以下是代码示例。

注:所有的终端连接到MySQL服务器获取流水号,如果获取到的是 “-1”,需要重新获取。

CREATE DEFINER = 'root'@'%'
PROCEDURE GetCurrentDateNumber()
BEGINset @lock_string='order_num_lock';#5代表获取锁时等待5秒SELECT GET_LOCK(@lock_string,5) INTO  @order_num_lock;set @TodayString=DATE_FORMAT(CURDATE(),'%Y%m%d');IF @order_num_lock=1 THENSELECT COUNT(*) INTO @TodayCountFROM OrderInfo WHERE LEFT(OrderNum,8)=@TodayString;IF @TodayCount=0 THENset @SerialNum=CONCAT(@TodayString,'0001');INSERT INTO OrderInfo (OrderNum) VALUE (@SerialNum);select @SerialNum SerialNum;ELSESELECT MAX(OrderNum) INTO @MaxOrderNumFROM OrderInfo WHERE LEFT(OrderNum,8)=@TodayString;set @SerialNumInt=cast(RIGHT(@MaxOrderNum,4) AS SIGNED)+1;SET @SerialNum=CONCAT(@TodayString,RIGHT(CONCAT('0000',CAST(@SerialNumInt AS char)),4));INSERT INTO OrderInfo (OrderNum) VALUE (@SerialNum);select @SerialNum SerialNum;END IF;select RELEASE_LOCK(@lock_string) INTO @RELEASE_LOCK;ELSESELECT '-1' SerialNum; #拿不到锁时,返回-1END IF;END

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

http://www.lryc.cn/news/278428.html

相关文章:

  • 前端导出Excel文件,部分数字前面0消失处理办法
  • 零基础学Python网络爬虫案例实战 全流程详解 高级进阶篇
  • 第十二届“中关村青联杯”全国研究生数学建模竞赛-A题:水面舰艇编队防空和信息化战争评估模型(续)(附MATLAB代码实现)
  • bmp图像文件格式超详解
  • Unity Meta Quest 一体机开发(十三):【手势追踪】自定义交互事件 EventWrapper
  • 13、Redis高频面试题
  • Koa学习笔记
  • HiDataPlus 3.3.2-005 搭建(个人的一点心得体会 x86 平台)
  • 【PHP】PHP实现与硬件串口交互,接收硬件发送的实时数据
  • HNU-数据库系统-作业
  • Python基础知识:整理10 异常相关知识
  • golang并发安全-select
  • 微软Visual Studio产品之Visual C++编程进阶——一维数组(画画版)
  • Moonbeam生态项目分析 — — 下一代DeFi协议HydraDX
  • Spark九:Spark调优之Shuffle调优
  • linux c多线程优先级
  • Redis在项目开发中的应用
  • mapper向mapper.xml传参中文时的乱码问题
  • 基于Docker官方php:7.1.33-fpm镜像构建支持67个常见模组的php7.1.33镜像
  • Type-C PD充电器受电端sink诱骗取电汇总:小家电应用5V9V12V15V20V28V
  • 禁用code server docker容器中的工作区信任提示
  • JSON格式插件-VUE
  • dubbo的springboot集成
  • 【人工智能】智能电网:未来能源的革命
  • 【AIGC】一组精美动物AI智能画法秘诀
  • JS 高频面试题
  • linux—多服务免密登录
  • 【MySQL】数据库之MHA高可用
  • ffmpeg 改变帧率,分辨率,时长等命令
  • 烟火检测AI边缘计算智能分析网关V4在安防项目中的应用及特点