php - 資料庫如何判斷一條資料是否被修改?
大家讲道理
大家讲道理 2017-07-07 10:35:07
0
7
1613

A ,B同時在一頁面上存取一組資料, A針對其中一條資料做了修改. B的頁面沒有刷新,所以B看見的資訊是在A修改之前的,這時候B也要修改這資料. 我如何做才能提醒B,這條資料已經被修改過.

看到一個辦法,修改資料之前根據這條資料最後修改的時間先將這條資料查出來(select * from xxx where updatetime = xxx and id= xxx),如果查不到說明修改過,查到了說明沒有修改.

我想問有沒有更好的辦法?

大家讲道理
大家讲道理

光阴似箭催人老,日月如移越少年。

全部回覆(7)
typecho

我記得hibernate中樂觀鎖用的是版本號字段實現的,每次更新成功後時候版本號字段的值加1
在更新前,先檢查數據庫中的版本號和頁面中保存的版本號是否相同,如果版本號碼變大,提示使用者在編輯期間已有其他使用者修改了資料。

當然也可以用悲觀鎖,進入頁面的時候使用的select ... for update鎖定記錄,這時候其他用戶就不能同時編輯鎖定的記錄了。

伊谢尔伦

我會這樣做————加個字段,edit_num,每改一次+1,B要改的時候比對一下。

黄舟

樂觀鎖 樂觀鎖 樂觀鎖

给我你的怀抱

樂觀鎖機制 透過為資料添加version欄位來實現

大家讲道理

給資料表加個欄位update_at類型為TIMESATMP,預設值為CURRENT_TIMESTAMP,其他不用改
每當資料更新後,該值會自動更新

女神的闺蜜爱上我

在這條資料裡面加個version 欄位版本號 預設從0開始,沒修改一次自增一次,每次提交驗證本次的version和資料庫裡的version是否一致即可。

为情所困

xxx表格裡加一個版本號碼的欄位

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板