我一直在面對這個問題很長一段時間。與SQL事務和ROWLOCKS混淆ASP.net C#
我的窗體上有兩個按鈕。 btnNEXT,btnSUBMIT ..
當用戶點擊btnNEXT時,會顯示下一條記錄的詳細信息。然後用戶輸入一些數據並點擊btnSUBMIT。此操作將更新該特定記錄的詳細信息。
現在,我有大約10個用戶在使用它。當用戶1點擊btnNEXT時,他會得到一條記錄進行修改。現在我想讓該記錄被鎖定,並且沒有其他用戶可以看到該記錄。當User1輸入詳細信息並單擊btnSUMBIT時,記錄將被更新並鎖定將被釋放。其他場景: 用戶1單擊btnNEXT。那麼記錄將被鎖定。如果用戶在不更新任何數據的情況下關閉應用程序,則應解除記錄。
我做了什麼: 的begin tran選擇頂層1 *從(UPDLOCK,READPAST),其中條件
更新表中設置A = 1,B表= 2其中id = 123提交TRAN
以上查詢滿足我對鎖定和解鎖行的條件。但我想開始btnNEXT_Click事件中的事務並在btnSUMBIT_Click事件中提交事務
我該如何實現這一目標?..我無法超越此目的去思考。如果你有一個能滿足我的整個場景
非常感謝
你可以使用樂觀鎖嗎?請參閱:http://stackoverflow.com/questions/129329/optimistic-vs-pessimistic-locking。如果你仍然真的想要使用悲觀鎖定,你可以使用類似專用的「鎖定」表格,但是當「交易」未完成時,需要某種方式來解鎖項目。 – 2011-04-27 06:34:18
在SQL服務器中持續鎖定不確定時間是災難的祕訣......由於@moe說鎖定表可能是一個好的解決方案 – 2011-04-27 12:59:31