在分布式程序中經常遇到多個用戶對同一數據的更新,雖然數據庫中對更新操作加了鎖,防止同時更新的問題,但是也可能會存在數據被重寫的問題。比如:用戶a 對學生表的name字段進行修改,用戶b對學生表的age進行修改,它們是同時執行的。因為我們對更新加了鎖,所以假如A執行,b等待,當a執行了后,b開始執行,由于b提交的數據中包含了name字段,所以對a修改的name值也修改了。所以就照成了數據的重寫。
其實這個問題很好解決的,我們可以對表加一個時間的字段,每次更新進行判斷,當前提交的數據中的改時間值是否和表中的該字段的值相同,如果相同就進行更新操作。在更新的同時也把這個時間字段設置成最新的。