2013-07-25 57 views
0

我已經創建了下面的TSQL:SQL鎖定默認

begin transaction 
    update person.Address set addressline2 = 'The Town' where addressid=1 
    WAITFOR DELAY '0:00:010' 
    commit 

在十週秒鐘的延遲,你是不是能夠運行在另一個SQL工作室經理這條SQL語句:

SELECT * FROM Person.Address 

或者這樣:

SELECT * FROM Person.Address where addressid=1 

但你能夠運行這個:

SELECT * FROM Person.Address where addressid<>1 

SQL Studio Manager是否選擇鎖定類型?我不相信它,你可以這樣做:

SELECT * FROM Person.Address其中addressid = 1個NOLOCK

我已閱讀本網頁:>http://msdn.microsoft.com/en-us/library/ms175519%28v=sql.105%29.aspx,但我仍不清楚。

回答

1

提示NoLock還意味着'未提交讀'僅適用於選擇語句。因此,它也允許您查詢未提交的數據。請查找文檔Here,其中,如果沒有提示,引擎將不允許您讀取未提交的數據。

+0

你能否確認SQL Server爲你的查詢選擇了鎖的類型? +1。 – w0051977

+0

我不認爲我理解您的查詢 – Phani

+0

謝謝。你能夠選擇你想要使用的鎖還是SQL Server爲你做的? – w0051977