🎯 什麼情境該想到我

當你「一筆業務交易橫跨多個請求,想在提交時才用版本號偵測有沒有人動過同一筆資料」的時候。

⚙️ 怎麼用(步驟 / 公式)

意圖:不預先鎖定,而是在提交時偵測是否發生衝突——若有人在期間內改過同一筆資料就擋下,讓使用者重做。

做法要點:

  • 每筆記錄帶一個版本號(或時間戳)。
  • 讀取時記下版本號;提交時用「WHERE version = 讀到的版本」更新,並讓版本號 +1。
  • 若更新影響列數為 0,代表期間被別人改過 → 衝突,回滾並提示重試。
  • 適合衝突機率低的情境,並發度高。

🧪 我實際套用的紀錄

  • (待填)

⚠️ 注意 / 什麼時候不適用

  • 衝突頻繁時,使用者常做白工再重來,體驗差。
  • 衝突要到最後提交才發現(已投入的編輯可能全丟)。
  • 高衝突情境改用悲觀離線鎖較合適。

🔗 相關工具