業務需求.商家針對採購需求發貨生成供貨單
代碼邏輯:
1.開啓事物
2.根據採購需求查詢所屬供貨單已發貨數量
3.根據採購需求採購數量>已發貨才允許供貨單
4.滿足2條件插入發貨指定發貨數量的供貨單
5.commit事物
錯誤思維 商家一個一個進行發貨。不存在併發。就不考慮原子性。
出現問題:
1.數據庫因爲高峯期 峯值上去 商家發貨 1、3、4因爲數據庫高峯期sql阻塞。
2.前端沒有做重複提交。或者因爲超時異常取消重複提交按鈕。
3.商家再次進行發貨。導致重複發貨
解決方式:
1.不應該基於人的覺得來考慮併發
2.雖然有的是單個人操作。但是保證原子性的地方都需要加鎖