sqlserver2008鎖表語句詳解(鎖定命據庫一個表)。本站提示廣大學習愛好者:(sqlserver2008鎖表語句詳解(鎖定命據庫一個表))文章只能為提供參考,不一定能成為您想要的結果。以下是sqlserver2008鎖表語句詳解(鎖定命據庫一個表)正文
鎖定命據庫的一個表
SELECT * FROM table WITH (HOLDLOCK)
留意: 鎖定命據庫的一個表的差別
SELECT * FROM table WITH (HOLDLOCK)
其他事務可以讀取表,但不克不及更新刪除
SELECT * FROM table WITH (TABLOCKX)
其他事務不克不及讀取表,更新和刪除
SELECT 語句中“加鎖選項”的功效解釋
SQL Server供給了壯大而完整的鎖機制來贊助完成數據庫體系的並發性和高機能。用戶既能應用SQL Server的缺省設置也能夠在select 語句中應用“加鎖選項”來完成預期的後果。 本文引見了SELECT語句中的各項“加鎖選項”和響應的功效解釋。
功效解釋:
NOLOCK(不加鎖)
此選項被選中時,SQL Server 在讀取或修正數據時不加任何鎖。 在這類情形下,用戶有能夠讀取到未完成事務(Uncommited Transaction)或回滾(Roll Back)中的數據, 即所謂的“髒數據”。
HOLDLOCK(堅持鎖)
此選項被選中時,SQL Server 會將此同享鎖堅持至全部事務停止,而不會在途中釋放。
UPDLOCK(修正鎖)
此選項被選中時,SQL Server 在讀取數據時應用修正鎖來取代同享鎖,並將此鎖堅持至全部事務或敕令停止。應用此選項可以或許包管多個過程能同時讀取數據但只要該過程能修正數據。
TABLOCK(表鎖)
此選項被選中時,SQL Server 將在全部表上置同享鎖直至該敕令停止。 這個選項包管其他過程只能讀取而不克不及修正數據。
PAGLOCK(頁鎖)
此選項為默許選項, 當被選中時,SQL Server 應用同享頁鎖。
TABLOCKX(排它表鎖)
此選項被選中時,SQL Server 將在全部表上置排它鎖直至該敕令或事務停止。這將避免其他過程讀取或修正表中的數據。
HOLDLOCK 持有同享鎖,直到全部事務完成,應當在被鎖對象不須要時立刻釋放,等於SERIALIZABLE事務隔離級別
NOLOCK 語句履行時不收回同享鎖,許可髒讀 ,等於 READ UNCOMMITTED事務隔離級別
PAGLOCK 在應用一個表鎖的處所用多個頁鎖
READPAST 讓sql server跳過任何鎖定行,履行事務,實用於READ UNCOMMITTED事務隔離級別只跳過RID鎖,不跳過頁,區域和表鎖
ROWLOCK 強迫應用行鎖
TABLOCKX 強迫應用獨有表級鎖,這個鎖在事務時代阻攔任何其他事務應用這個表
UPLOCK 強迫在讀表時應用更新而不消同享鎖
留意: 鎖定命據庫的一個表的差別
SELECT * FROM table WITH (HOLDLOCK) 其他事務可以讀取表,但不克不及更新刪除
SELECT * FROM table WITH (TABLOCKX) 其他事務不克不及讀取表,更新和刪除