知方可補不(bu)足(zu)~UPDLOCK更(geng)新鎖的使用(yong)
對于高并發的場合下,使用UPDLOCK可以有效的控制并發更新的問題,即當一個線程在進行with(UPDLOCK)并進行update時,另一個線程將被阻塞,它會等第一個線程更新結束后,才可以進行它里面的操作,使用UPDLOCK有效的避免了并(bing)發更(geng)新而(er)產(chan)生的數據(ju)錯誤的問(wen)題,如累(lei)加操作(zuo),第二個線(xian)程需要等第一個線(xian)程累(lei)加結(jie)束后,才能進行下一步(bu)的累(lei)加動作(zuo),這是我們可以接(jie)受的。
測試代碼如下
BEGIN TRAN SELECT * FROM WebManageUsers WITH ( UPDLOCK ) WHERE LoginName = 'zzl' WAITFOR DELAY '00:00:10' UPDATE WebManageUsers SET RealName = 'zzlreal11' WHERE LoginName = 'zzl' COMMIT TRAN
代(dai)碼(ma)運(yun)行后,再打開(kai)一個SQL客戶端,進行下面(mian)代(dai)碼(ma)的修改
BEGIN TRAN SELECT * FROM WebManageUsers WITH ( UPDLOCK ) WHERE LoginName = 'zzl' WAITFOR DELAY '00:00:10' UPDATE WebManageUsers SET RealName = 'zzlreal22' WHERE LoginName = 'zzl' COMMIT TRAN