[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)
备注
-
9 和 查询的参数自行替换生成即可
-
lpad 用于字符串左边补0,第2个参数表示总长度,第3个参数表示用什么数字补;
-
rpad 用于右边补
附记:在茫茫的信息海洋中,遇到就是有缘,期待回复交流,为缘分留下痕迹……