[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 @ 2021-12-01 15:41  哆啦梦乐园  阅读(1342)  评论(0编辑  收藏  举报