簡體   English   中英

在SQL 2005-2008中鎖定行

[英]Locking Row in SQL 2005-2008

有沒有辦法在不啟動事務的情況下鎖定SQL 2005-2008數據庫中的行,因此其他進程在解鎖之前無法更新該行?

你可以使用RowLock或其他提示,但你應該小心 ..

HOLDLOCK提示將指示SQL Server保持鎖定,直到您提交事務為止。 ROWLOCK提示將僅鎖定此記錄,而不會發出頁鎖或表鎖。

如果您關閉連接或超時,也會釋放鎖定。 我會非常小心這樣做,因為它會阻止任何觸及此行的SELECT語句。 SQL Server有許多可以使用的鎖定提示。 當您在HOLDLOCK或ROWLOCK上搜索時,您可以在聯機叢書中看到它們。

您在服務器中執行的所有操作都在事務中發生,無論是隱式還是顯式。

您不能簡單地鎖定沒有事務的行(使行只讀)。 您可以將數據庫設置為只讀,但不能只讀取一行。

解釋你的目的,這可能是一個更好的解決方案。 隔離級別和鎖定提示以及行版本控制

你需要鎖定一行 ,還是Sql Server的應用程序鎖會做你需要的?

應用程序鎖只是一個帶有名稱的鎖,您可以“鎖定”,“解鎖”並檢查它是否已鎖定。 請參閱以上鏈接了解詳情。 (如果你的連接關閉等,他們會被解鎖,所以傾向於清理自己)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM