- 取得連結
- 以電子郵件傳送
- 其他應用程式
此情境中,當訂單成立的時候將會直接從商品庫存資料表扣除購買的商品數量
商品「可購買數量」為商品庫存資料表中儲存的商品數量
所以在消費者取消訂單的時候,商品數量將會被回補到商品庫存資料表
此項目並沒有實作在範例程式碼
接下來開始建立以上述邏輯為基礎的資料庫物件
修改資料庫物件
執行 procedure-correct.sql 修改 Products.GetProductValidStorage 與 Orders.AddOrder 資料庫物件
執行搶購模擬
與先前步驟相同使用同一個指令進行搶購模擬
dotnet eShop.Loader.dll -t 2500 -e 11:12
啟用後會等待直到設定時間
![](https://raw.githubusercontent.com/txstudio/eShopPanicBuyingSimulatorUseStoreProcedure/master/screenshot/correct-case-start-event-with-2500-task.gif)
執行完成後點選任意按鍵結束應用程式
![](https://raw.githubusercontent.com/txstudio/eShopPanicBuyingSimulatorUseStoreProcedure/master/screenshot/correct-case-loading-test-finish.gif)
模擬結束後開啟資料表查詢確認商品購買的狀態
確認結果
檢查 Events.AddEventDatabaseError 是否有預存程序執行錯誤
![](https://raw.githubusercontent.com/txstudio/eShopPanicBuyingSimulatorUseStoreProcedure/master/screenshot/correct-case-no-database-error-record.gif)
沒有錯誤產生
執行 validation.sql 指令碼確認查詢結果是否有超賣
![](https://raw.githubusercontent.com/txstudio/eShopPanicBuyingSimulatorUseStoreProcedure/master/screenshot/correct-case-not-overselling.gif)
查詢結果顯示訂購的商品總量與原庫存量是相符的
額外設定
確認 Orders.OrderMains 訂單資料表是否有異常情況
![](https://raw.githubusercontent.com/txstudio/eShopPanicBuyingSimulatorUseStoreProcedure/master/screenshot/correct-case-order-schema-seq-data-row-was-wrong.gif)
主索引與訂單編號的順序並不相同,從建立日期看到建立時間是相同的
從 Events.EventBuying 資料表紀錄中顯示有 275 次的下單失敗
![](https://raw.githubusercontent.com/txstudio/eShopPanicBuyingSimulatorUseStoreProcedure/master/screenshot/correct-case-275-orders-is-failed.gif)
雖然沒甚麼實際意義,不過傷心的消費者變多了
結論
此資料庫設計在搶購情況下並沒有商品超賣的情況產生
章節清單
- 電子商務網站商品搶購模擬 - 使用預存程序
- 建立 eShop 資料庫
- 模擬搶購應用程式簡介
- 將購訂單商品數量與庫存量作關聯
- 扣除購買商品的商品庫存量
留言
張貼留言