簡體   English   中英

對我而言,實現記錄鎖定的最佳方法是什么?

[英]What is the best way for me to implement record locking?

我有一個關於鎖定的問題。 這不僅與記錄鎖定有關,而且無論如何。

假設我正在編寫一個可訪問Web的CMS。 我正在努力爭取一些想法。

當用戶打開文章進行編輯時,我可以將文章標記為“正在使用”。 到現在為止還挺好。

但是何時刪除該標志? 用戶何時保存文章? 但是,如果用戶不想再輸入,而是決定關閉瀏覽器並上床睡覺怎么辦?

我想到了一種超時機制,但是寫一篇文章需要多長時間? 10分鍾太短,30分鍾太長..

也許我把這個復雜化了。 我想聽聽您對這個問題的想法。

為什么不使用時間戳? 實際上,不必擔心鎖定任何內容,只需對記錄(文章)已更改的事件做出反應。

基本上,在保存文章之前,請檢查您的版本(時間戳)是否與磁盤上的版本相同。 如果相同,則您仍具有最新副本,因此請寫入它;如果不相同,則...提供合並,提供另存為新內容,丟棄它-特定於其應用程序。

我的投票是盡可能地樂觀鎖定

在一個實現了實際鎖的地方,我有一個管理頁面來刪除鎖。 服務器上還有一個服務正在運行,用於解鎖沒有相應活動會話的所有鎖。

對於mssql 2005及更高版本,請使用rowversion;對於mssql 2000及以下版本,請使用時間戳。 將隱藏的xmin字段用於PostgreSQL。

讓所有其他用戶打開記​​錄。 除了保存記錄外,保存記錄的標簽以及在rowversion的幫助下,在catch(DbConcurrencyException)上再次引發錯誤,該錯誤指示其他用戶在保存記錄之前先保存了記錄,並要求他們重新打開記錄查看由首先保存記錄的用戶所做的更改。

暫無
暫無

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

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