[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 用於右邊補


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM