SqlServer中的更新鎖 UPDLOCK

2022-02-13 22:38:23 字數 849 閱讀 7823

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

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

示例:測試:

在另乙個查詢裡:

begin

transaction

select

*from mytable with (updlock) where id in (1,2,3

)waitfor delay '

00:00:10

'update mytable set

[name]=

'zz'where id in (1,2,3

)commit

transaction

在另乙個查詢裡:

select

*from mytable where id in (1,2,3)

可以馬上查詢到資料。

但如果要更新資料,必須等其他更新鎖釋放後才能執行。

update mytable set

[name]=

'zz'where id in (1,2,3)

這就說明,有時候需要控制某條記錄在我讀取後就不許再進行更新,那麼我就可以將所有要處理當前記錄的查詢都加上更新鎖,以防止查詢後被其它事務修改.將事務的影響降低到最小

同事有這個疑問:在什麼情況下會要求「讀取後不許更新」

比如:該事物內讀取資料後在更新操作,此時事物並未提交,如果另外有其他執行緒更改了這條資料,這時事務內的更新將有可能會覆蓋更新的操作

SqlServer的更新鎖 UPDLOCK

updlock.updlock 的優點是允許您讀取資料 不阻塞其它事務 並在以後更新資料,同時確保自從上次讀取資料後資料沒有被更改。當我們用updlock來讀取記錄時可以對取到的記錄加上更新鎖,從而加上鎖的記錄在其它的執行緒中是不能更改的只能等本執行緒的事務結束後才能更改,我如下示例 begin t...

SqlServer的更新鎖 UPDLOCK

updlock 讀取表時使用更新鎖,而不使用共享鎖,並將鎖一直保留到語句或事務的結束。updlock 的優點是允許您讀取資料 不阻塞其它事務 並在以後更新資料,同時確保自從上次讀取資料後資料沒有被更改。這是sqlserver2000中對更新鎖的說明.當我們用updlock來讀取記錄時可以對取到的記錄...

SqlServer的更新鎖(UPDLOCK)

updlock 讀取表時使用更新鎖,而不使用共享鎖,並將鎖一直保留到語句或事務的結束。updlock 的優點是允許您讀取資料 不阻塞其它事務 並在以後更新資料,同時確保自從上次讀取資料後資料沒有被更改。這是sqlserver2000中對更新鎖的說明.當我們用updlock來讀取記錄時可以對取到的記錄...