2011年9月26日 星期一

鎖定簡介

資料來源



ROWLOCK 讀取或修改資料時使用資料列層級鎖定。這些鎖定會依適當情況被取得及釋放。

PAGLOCK 讀取或修改資料時使用頁面層級鎖定。這些鎖定會依適當情況被取得及釋放。

TABLOCK 讀取或修改資料時使用資料表鎖定。此鎖定會被保留到陳述式結束為止。

DBLOCK 讀取或修改資料時使用資料庫鎖定。此鎖定會被保留到陳述式結束為止。

LOCKMODES

UPDLOCK 在讀取資料表時使用更新鎖定,而非共用鎖定,並使用保留鎖定直到陳述式或交易結束為止。UPDLOCK 可讓您不會在讀取資料時封鎖其他讀取器,且稍後更新資料時,也可確信自從您上次讀取之後,資料並未發生變更。

XLOCK 在讀取資料表時使用獨佔鎖定,而非共用鎖定,並使用保留鎖定直到陳述式或交易結束為止。

持續期間

HOLDLOCK 使用保留鎖定將鎖定保留至交易完成為止,而不會在所需資料表、資料列或資料頁已不再需要時立即釋放鎖定。

NOLOCK 不會發出任何鎖定。這是 SELECT 作業的預設值。此鎖定不適用於 INSERT、UPDATE 及 DELETE 陳述式。

範例:

begin tran begin tran select * from test1 with (xlock) where t1 = 1 '鎖定t1=1的資料

rollback

begin tran begin tran select * from test1 with (tablock,xlock) '鎖定資料表Test1

rollback