搜尋

首頁  >  問答  >  主體

php - 資料庫如何判斷一條資料是否被修改?

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

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

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

大家讲道理大家讲道理2699 天前1590

全部回覆(7)我來回復

  • typecho

    typecho2017-07-07 10:37:07

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

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

    回覆
    0
  • 伊谢尔伦

    伊谢尔伦2017-07-07 10:37:07

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

    回覆
    0
  • 黄舟

    黄舟2017-07-07 10:37:07

    樂觀鎖 樂觀鎖 樂觀鎖

    回覆
    0
  • 给我你的怀抱

    给我你的怀抱2017-07-07 10:37:07

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

    回覆
    0
  • 大家讲道理

    大家讲道理2017-07-07 10:37:07

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

    回覆
    0
  • 女神的闺蜜爱上我

    女神的闺蜜爱上我2017-07-07 10:37:07

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

    回覆
    0
  • 为情所困

    为情所困2017-07-07 10:37:07

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

    回覆
    0
  • 取消回覆