MySQL生成自增的流水号,每天从0开始

MySQL触发器自动生成自定义编码:字母+年月日+流水号 类型:字母+年月日+流水号 触发器设置: 具体代码(和上面的有点区别,以下面的为准): -- 例:tp220127001 tp-年份后两位-月-日-三位数的流水号 BEGIN -- PART1:声明各个变量 DECLARE currentdate varCHAR (8) ; -- 当前日期 DECLARE maxNo INT DEFAULT 0 ; DECLARE oldNo VARCHAR (11) DEFAULT '' ; -- 此处的字符长度必须和要生成的目标编码的长度一致 阅读详情
AI摘要

本文介绍了如何使用MySQL创建表、事件和锁机制来生成付款订单的不重复流水号,包括创建表结构、设置每日自动插入数据的事件以及处理并发场景的优点。


一、前言

  1. 按一定规则生成付款订单单号,要求不重复
  2. 例如:前缀 + 日期 + 不重复流水号,FK202308150001
前缀	日期		不重复流水号
FK 		20230815 	0001
  1. 为了避免重复,符合自增有序,接下来使用MySQL锁机制实现

二、具体实现如下

1.创建一张表

CREATE TABLE serial_numbers
(
    id INT AUTO_INCREMENT PRIMATY KEY,
    serial_number INT,
    date DATE
)

2.利用MySQL事件,在每天开始插入一条数据

创建MySQL事件

CREATE EVENT auto_insert_data
    ON SCHEDULD EVERY 1 DAY STARTS '开始时间,例如:2023-08-15 00:00:00'
    DO
    BEGIN
        INSERT INTO serial_numbers (serial_number, date) 
        VALUES (0, CURDATE())
        ON DUPLICATE KEY UPDATE serial_numbers = 0
    END;

查看已创建事件

SHOW EVENTS;

删除事件

DROP EVENT IF EXISTS auto_insert_data;

3.获取自增流水号

每次调用流水号+1

UPDATE serial_numbers
SET serial_number = LAST_INSERT_ID(serial_number + 1)
WHERE date = CURDATE();

获取流水号

SELECT CONCAT('YX', DATE_FORMAT(date, '%Y%m%d'), LPAD(LAST_INSERT_ID(serial_number), 4, 0)) order_num
FROM serial_numbers
WHERE date = CURDATE();

三、MySQL生成流水号优点

  1. 并发场景下流水号不重复
  2. 生成流水号有序
mysql创建流水号 mysql创建流水号,以前也一直不知道怎么写,最后我知道了,然后我保存了下来 立即下载

相关推荐

mysql创建流水号,用的纯sql语句

mysql创建流水号,以前也一直不知道怎么写,最后我知道了,然后我保存了下来,用的纯sql语句,不需要后台java或者别的语言去生成。直接数据库的sql语句就行了。我设置的积分是1分。要是增加了,就是优快云增加的,

MySQL生成自增的流水号

MysSQL生成指定流水号

qq_44717657的博客 4861

5分钟搞定阿里云千问大模型API申请:手把手教你获取API Key

本文提供了一份高效的阿里云通义千问大模型API Key获取实战指南。通过清晰的步骤,帮助开发者在五分钟内完成从账号准备、精准导航控制台到创建并验证API Key的全过程,并强调了密钥安全管理和基础调用测试的重要性,助力快速集成AI能力。

ol789012345的博客 1348

oracle 指定类型和指定位数创建序列号

-- Create table create table LDMAXNO ( NOTYPE VARCHAR2(17) not null, NOLIMIT VARCHAR2(12) not null, MAXNO INTEGER not null ); -- Add comments to the table comment on table LDMAXNO is '产生最大的流水号,所有的号码从1开始'; -- Add comments to the columns comment

Gblfy_Blog 980

保姆级教程:用CellOracle 0.10.13分析你的单细胞数据,从GRN构建到基因扰动模拟

本文详细介绍了如何使用CellOracle 0.10.13进行单细胞数据分析,从基因调控网络(GRN)构建到基因扰动模拟的全流程。通过环境配置、数据准备、GRN构建和扰动模拟等步骤,帮助研究者高效预测细胞命运决定的分子机制,特别针对实际分析中的易错点提供解决方案。

weixin_42525005的博客 437

【教程4>第10章>第13节】基于FPGA的图像双边滤波开发——单通道双边滤波Verilog实现

本文介绍了基于Vivado 2022.2的单通道高斯滤波FPGA实现方案。主要内容包括:1)采用3×3窗口像素提取、高斯权值计算、exp指数运算等模块构建双边滤波系统;2)详细分析了Verilog HDL实现的顶层设计文件,包含窗口数据生成、指数计算、混合权重、归一化处理等关键模块;3)展示了图像双边滤波器的RTL结构图。该设计为后续实现RGB三通道图像高斯滤波及MATLAB联合仿真奠定了基础。

FPGA/MATLAB学习教程/源码/项目合作开发 262

mysql流水号每天重置_mysql 生成流水号每天更新从0开始

经过总结生成流水号主要分为四步骤:说明:第一需要建一张序列表,第二新建事件每天定时清空序列,第三新建自增函数,第四新建生成序列规则sql函数。一、第一步新建序列表。说明:共有四个字段,序列名,当前值,每次自增数量,备注(可有可无)。说明:这里每次自增为1二、第二新建事件每天定时清空序列。说明:这里的事件是用工具建成(mysql navicat),并不是SQL生成的。注意:新建事件前需要先开启事务...

weixin_36415235的博客 2012

Aduino 通过I2C接口读取MPU6050模块数据

Aduino ESP9266通过I2C接口读取MPU6050模块数据 MPU6050模块 原理图 所需库:Adafruit_MPU6050 Adafruit_BusIO Adafruit Unified Sensor 接线示意图 ESP8266---MPU6050 VCC -- 3.3v GND -- GND D2 -- SDA D1 -- SCL 示例程序代码 #include <Adafruit_MPU6050.h> #include <Adafruit

perseverance51博客 621

mysql数据库的流水号生成_mysql 生成流水号每天更新从0开始

经过总结生成流水号主要分为四步骤:说明:第一需要建一张序列表,第二新建事件每天定时清空序列,第三新建自增函数,第四新建生成序列规则sql函数。一、第一步新建序列表。说明:共有四个字段,序列名,当前值,每次自增数量,备注(可有可无)。 说明:这里每次自增为1 二、第二新建事件每天定时清空序列。说明:这里的事件是用工具建成(mysql navicat),并不是SQL生成的。注意:新建事件前需要先开启...

weixin_39668527的博客 2302

H3C交换机命令大全,分模块好记忆!

在深入命令之前,我们先来了解H3C交换机的命令行基础。<H3C>[H3C]常用基础命令如下:这些基础命令是操作H3C交换机的敲门砖,熟练掌握后,我们将按模块深入探讨更具体的配置命令。H3C交换机的命令可以按功能模块分类,包括系统管理、接口配置、VLAN操作、链路聚合、路由配置、安全管理等。

网络技术联盟站 782

Python爬虫技术:使用Playwright和Twitter API v2高效获取Twitter/X数据完全教程

遵守规则:始终遵循Twitter的使用条款和速率限制错误处理:实现完善的错误处理和重试机制数据质量:进行数据清洗和验证性能优化:使用异步处理和合理的延迟设置可维护性:模块化代码,便于维护和扩展。

2201_76125261的博客 671

MySql每天从0开始生成特定规则自增编号

1、按一定规则生单号,要求不重复2、例如:前缀 + 日期 + 不重复流水号,whgz-20240528-00001。

The best are water的博客 3051

深度学习实战87-高中数学自适应测试系统研究与应用研发,前后台页面设计

大家好,我是微学AI ,今天给大家介绍一下深度学习实战87-高中数学自适应测试系统研究与应用研发,前后台页面设计。高中数学自适应测试系统旨在通过精准评估学生能力,用最少的题目发现其薄弱环节,并提供定制化的学习计划,帮助学生快速提升成绩。同时,系统结合了AI大模型实现自动判卷、生成报告,减轻教师负担,并支持个性化作业布置,使教学更加高效。学生可以清晰了解自身学习状态,教师也能获得精准的学生画像,实现差异化教学。

微学AI的博客 444

mysql 生成流水号每天更新从0开始

经过总结生成流水号主要分为四步骤: 说明:第一需要建一张序列表,第二新建事件每天定时清空序列,第三新建自增函数,第四新建生成序列规则sql函数。 一、第一步新建序列表。 说明:共有四个字段,序列名,当前值,每次自增数量,备注(可有可无)。 说明:这里每次自增为1 二、第二新建事件每天定时清空序列。 说明:这里的事件是用工具建成(mysql n

技术创造未来,程序改变生活。 7319

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

MySQL 建表为啥还设置个自增 id ?用流水号当主键不正好么?

又要开始新项目了,一顿操作猛如虎,梳理流程加画图。这不,开始对流程及表结构了。 我:吧啦吧啦吧啦 …… 老大:这个建表为啥还设置个自增 id ?直接用流水号(用户号/产品号)当主键不就行了? 我:这个是 DBA 规定的,创建表 id、createtime、updatetime 这三个字段都要有。《Java 开发规范》也是这么规定的。 小伙伴:(附和)是的,规定的是这样的! 老大:流水号在你这是唯一索引吧?设置成主键,这样就不用 id 了,还减少一次回表查询? 我:…… (说的好像很有道理,咱也不敢说话。).

AlbenXie的博客 2372

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

流水号指定编号自增

SET existing_company_id = (SELECT 公司编号 FROM company WHERE 公司 = NEW.公司);VALUES(formatted_number_p(),existing_company_id,NEW.联系人,NEW.电话);VALUES(formatted_number_p,existing_company_id,NEW.联系人,NEW.电话);VALUES(formatted_number,NEW.公司,NEW.省份,NEW.城市);-- 流水号自增触发器。

weixin_55706196的博客 439

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

mysql 生成流水号 存储过程 订单编号

用存储过程生成流水号是很常用的,这里以生成订单编号的流水号作为示例。(新的一天的流水号从1开始,如:今天的订单编号是CD2013010900014,下一个订单编号将是CD2013010900015;明天的订单编号将从CD2013011000001开始)生成规则: 2位前缀+年月日+5位流水号 或者 2位前缀+年月日时分+5位流水号 或者 2位前缀+年月日时分秒+5位...

weixin_30727835的博客 365

利用MySql函数生成不重复的流水号

利用MySql函数生成不重复的流水号添加存储流水号的表MySql函数创建封装获取流水号的方法Mappermapper.xml结语 添加存储流水号的表 create table T_CODE( id varchar(50) character set utf8 collate utf8_general_ci not null, currentvalue int null default 1, max...

qq_42382972的博客 1411

mysql 并发生成唯一编号_高并发环境下生成唯一流水号

高并发环境下生成唯一流水号的主要思路有两种:第一种是有一个控制全局的变量确保每个流水号的唯一性;第二种是每台机器根据算法自己生成在系统中无冲突的流水号;假设流水号的长度是128位(16字节);第一种实现方法:(1)采用数据库的自增主键确保唯一性;Database.javapackagemine;importjava.sql.Connection;importjava.sql.DriverManag...

weixin_42504785的博客 1391

MySQL 生成自增流水号

#以下是每次执行都初始化变量伪自增序列从0开始,不是从1开始自增 SELECT @rownum:=0 #以chinapostlocalregistry表增加流水号为例。 #insert into chinapostlocalregistry(number,Type,IsUsed,Created,UsedDate) select CONCAT('LAODD',DATE_FORMAT(...

weixin_30836759的博客 1394

php mysql 自动生成单号,mysql 生成流水号 存储过程 订单编号

用存储过程生成流水号是很常用的,这里以生成订单编号的流水号作为示例。(新的一天的流水号从1开始,如:今天的订单编号是CD2013 0109 00014 ,下一个订单编号将是 CD 2013 0109 00015 ; 明天的订单编号将从 CD 2013 0110 00001 开始) 生成规则:2位前缀用存储过程生成流水号是很常用的,这里以生成订单编号的流水号作为示例。(新的一天的流水号从1开始,如:...

weixin_42361018的博客 563

mysql每次查询加流水号_通过SQL自动添加流水号

通过SQL自动添加流水号项目中往往有一些单据流水号或者流程流水号是希望通过新增一条记录后自动产生一个编号的,比如新增一条流程就自动根据当前日期自动添加该流程的流程流水号,下面介绍两种不同类型流水号通过SQL自动产生的方法。流水号格式: www.2cto.com第一种(数值类型):日期+流水号,比如“201104190001”-->"201104190002";第二种(文本类型):前缀+日期...

weixin_42340136的博客 1511

用mysql数据库怎么设计流水号_mysql数据库做流水号

需求需要生成一个按某个种子生成流水号,这个种子目前是时间维度,比如2020年7月1日生成流水号从0开始一直向后递增1,无论2020年7月1日最终流水号生成多少,2020年7月2日生成流水号依然从0开始重新计数。方案1.考虑 redis 自增数据虽然这是常用方案,不过我们为了简化架构,redis组件增加后只用作获取自增序列这一个功能,有点大材小用了,所以暂不考虑这个方案。2.考虑数据库sequenc...

weixin_35782148的博客 847

mysql 流水号 并发_MySQL 并发下生成不重复流水号

更新于 2018-12-23 22:21:44前言:一年前的写的,当时的做法并不能在并发下保证流水号的唯一性,因为当时并没有写多线程测试过...思路sCodesNamesQzsValueorder订单DD18120100首先每个业务的流水号对应表中的一条数据每个要获取流水号的线程调用 一个用来生成流水号的 存储过程根据sCode 找到 sValue。if (sValue == null)初始化值e...

weixin_42097668的博客 835
上一篇: Java 八股文-集合框架篇
下一篇: Linux 离线安装 Docker 和 Docker Compose 最新版 的完整指南
dadeity
博客等级 码龄10年 1172粉丝 225原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

打赏作者

dadeity

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

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

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

打赏作者

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

抵扣说明:

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

余额充值