2014-10-22 57 views
0

我有一個要求,在我的頁面中我有一個表格,其中包含記錄列表。 當用戶點擊一條記錄時,記錄應該被鎖定,而其他具有舊視圖概覽屏幕的人會嘗試點擊該記錄,它會彈出一條消息「抱歉,該記錄正在進行中」。從jsp頁面執行用戶操作後鎖定記錄並釋放鎖定

我想在db表中添加一個列,當我點擊某個特定的記錄,然後當他關閉那條記錄時,我會讓輸入說'在prodress'中,我會用'Free'來更新該列。但是如果有人在沒有正確關閉的情況下直接選擇記錄並關閉瀏覽器並釋放該鎖,那麼在這種情況下,我沒有人會看到該記錄。

請讓我知道是否有其他方式來實現這一點,或者我們如何在上述情況下實現這一點。

條件1:在同一時間記錄的兩個用戶登錄對於普通顏色都是綠色可用。用戶1點擊記錄並開始編輯。在這種情況下,應該有某種鎖定,以便如果用戶2嘗試打開相同的記錄,他將彈出消息「進行中」。

條件2:用戶1登錄並以綠色查看記錄。然後用戶2登錄並以灰色看到相同的記錄。現在他不應該能夠點擊該記錄。

+0

X小時後您可以超時鎖定。 – Thilo 2014-10-22 06:12:17

回答

0

你有的問題正是爲什麼它通常不這樣做。如果你確實對記錄有嚴格的限制,你最好的選擇是有某種超時。超時時間取決於您的應用程序。讓你的客戶端定期刷新鎖定,並且可以縮短超時時間。

更好的解決方案可能不會鎖定,而是在保存更改之前檢查是否有人已經更改了數據。這通常使用要更新的記錄中的時間戳或版本號來完成。要尋找的概念是「樂觀鎖定」。

但是,這隻適用於可能的衝突是相對不可能的。更新客戶記錄的呼叫中心工作人員是一個典型案例,因爲兩個呼叫中心地點幾乎不會同時與同一個客戶交談。如果它發生,其中一個將會出錯,並且必須重新載入他的數據並再次進行更改。