[MySQL] 用一句SQL解决查询出最大值+1,并insert数据的问题

场景

数据的code需要有规律的动态生成,数据是有父子结构的。如果父节点数据是 003,子节点就是003001这样,再增加就是003002;
防止生成新的code时,有并发请求。因此需要包含在一个事务里。

解决方法

insert
    	person.department (id, code) (
    	select uuid(), lpad(max(code) + 1, 9, 0)
	    from 表名
    	where code like '002001%' and length(code) = 9)

备注

  1. 9 和 查询的参数自行替换生成即可

  2. lpad 用于字符串左边补0,第2个参数表示总长度,第3个参数表示用什么数字补;

  3. rpad 用于右边补

posted @   哆啦梦乐园  阅读(1492)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 一文读懂知识蒸馏
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
点击右上角即可分享
微信分享提示