鎖定資料庫的乙個表
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) 其他事務/語句不能讀取表,更新和刪除
例子:begin tran
select * from test_table with (tablockx) //表鎖
commit tran
這時,其它語句,比如select * from test_table將只能等待
SQL鎖表語句
鎖定資料庫的乙個表 select from table with holdlock 注意 鎖定資料庫的乙個表的區別 select from table with holdlock 其他事務可以讀取表,但不能更新刪除 select from table with tablockx 其他事務不能讀取表,...
SQL鎖表語句 收藏
sql鎖表語句 收藏 鎖定資料庫的乙個表 select from table with holdlock 注意 鎖定資料庫的乙個表的區別 select from table with holdlock 其他事務可以讀取表,但不能更新刪除 select from table with tablockx...
sql 鎖定表語句
鎖定資料庫的乙個表 select from table with holdlock 注意 鎖定資料庫的乙個表的區別 select from table with holdlock 其他事務可以讀取表,但不能更新刪除 select from table with tablockx 其他事務不能讀取表,...