2010-09-22 66 views
0

在SQL Server 2008中,如何檢測記錄是否被鎖定?如何檢測記錄被鎖定?

編輯:

我需要知道這一點,所以我可以通知,因爲該記錄被阻塞的記錄是無法訪問的用戶。

+0

你能否進一步解釋你在問什麼?如同爲什麼你需要知道記錄是否被鎖定? – 2010-09-22 10:04:04

+0

看到我的編輯在startpost – Martijn 2010-09-22 10:09:12

+1

我認爲你可能會以錯誤的方式來解決這個問題:消除鎖定,而不是集中報告給用戶 – 2010-09-22 10:37:12

回答

3

在大多數情況下與SQL 2008,你可以這樣做:

if exists(select 0 from table with (nolock) where id = @id) 
    and not exists(select 0 from table with(readpast) where id = @id) 
begin 
    -- Record is locked! Do something. 

end 

如果這是不夠的(也就是你需要忽略表級鎖爲好),使用NOWAIT提示拋出如果有鎖,則爲錯誤。

+0

非常感謝。我需要的是NOWAIT暗示! – Martijn 2010-09-22 11:09:08