使用UpdLock來扣減庫存

2022-02-20 08:31:50 字數 429 閱讀 9971

updlock.updlock 的優點是允許您讀取資料(不阻塞其它事務)並在以後更新資料,同時確保自從上次讀取資料後資料沒有被更改。

當我們用updlock來讀取記錄時可以對取到的記錄加上更新鎖,從而加上鎖的記錄在其它的執行緒中是不能更改的只能等本執行緒的事務結束後才能更改, 

更改庫存

begin tran

if(not exists(select 1 from 庫存表 a with (updlock) join 銷售明細 b on a.pid=b.pid where a.庫存量begin

waitfor delay '00:00:10' 

update 庫存表

set 庫存量=庫存量-b.銷售數量

from  庫存表 a  join 銷售明細 b on a.pid=b.pid  

endcommit tran

關於庫存扣減問題

昨天面試的時候,被面試官問到庫存扣減問題。估計面試官把我的專案當成秒殺了。怪我自己沒介紹清楚專案,自己挖坑。今天在部落格上看了一些關於庫存扣減問題,主要還是覺得比較合適的方式就是使用redis分布式鎖,這是最簡單的方案,但是如果事務過大,會有效能問題.操作不當,會有死鎖問題 如果兩個執行緒同時執行的...

資料庫庫存扣減樂觀鎖使用

資料庫加樂觀鎖 使用資料版本 version 記錄機制實現,這是樂觀鎖最常用的一種實現方式。何謂資料版本?即為資料增加乙個版本標識,一般是通過為資料庫表增加乙個數字型別的 version 欄位來實現。當讀取資料時,將version欄位的值一同讀出,資料每更新一次,對此version值加一。當我們提交...

關於電商庫存扣減問題

b2c 庫存扣減方式 1 直接扣減實際庫存 直接採用實際庫存,每次客戶下單扣減實際庫存,容易導致庫存占用,對銷售和運營都不合理。a 如果購買使用者未付款,實際庫存導致庫存被扣減,讓有意願購買的使用者無從下單,對銷售業務有很大影響 b 未付款訂單給予30 40 鐘付款等待時間,未付款自動釋放虛擬銷售庫...