簡體   English   中英

事務是否鎖定行以防止數據不一致

[英]Does transaction locks the row to prevent the data inconsistancy

我是MSSQL的新手,正在創建一個可以讓客戶下訂單的網站。

每個訂單可以具有數量不限的多個項目。

我有興趣在保存訂單之前檢查所需的數量是否可用於每個物料,如果是,那么我將下訂單並更新物料庫存,否則我想回滾。

但同時,我希望任何其他訂單都應等到第一筆交易完成。 這樣向上更新不會覆蓋更改並產生不一致。

如果每個訂單都在交易中處理,是否足夠?還是我必須考慮其他事項?

如果您訪問任何在線零售網站,您會發現您逛商店,購買東西(實際上不是購買商品,而是被添加到購物籃中),完成購物后,您會轉到結帳處提供付款明細等

因此,想法是,網站向每個客戶顯示所有(至少有一個庫存商品),此時沒有商品庫存正在更新或插入,在結帳階段,完整的訂單被編譯並提交給系統,(在此階段,您將對商品庫存進行實際的更新/插入),現在如何處理訂單完全取決於您。

  1. 當任何一件商品的庫存少於訂購數量時,是否要回滾整個訂單?

  2. 您是否要提交所有訂單行並且僅回退那些庫存少於訂購數量的訂單行?

  3. 或者,您是否想下一個臨時訂單而不考慮庫存量並控制交貨日期?

根據您選擇的路線(這應該是業務決策,開發人員不應該做出這些決策),可以有很大的靈活性,但是您永遠不會做的一件事就是一旦有人選擇購買商品,您將更新庫存。 所有這些都應該在購買過程的最后完成,並且應該一次完成。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM