請問處理有關data concurrency問題

通常做法係咪:

首先係要改野既table 上面 加一個 field (e.g. flag)

跟住係網頁到
個user 一入改野果版 即刻 將flag =1
if  特定時間 / 按cancel /按submit flag= 0

同時
if flag = 1 其他人唔可以改果個 data

有冇更簡單既做法? 因為成個system 有好多部份 好多唔同既form ,如果咁做法應該要有排搞

thanks

本帖最後由 henrywho 於 2012-4-6 10:07 編輯

1) When loading that modification page,
  1. update the_lock_table
  2. set lock_timestamp = [server_timestamp],
  3. session_id = [my_session_id_plus_random_salt]
  4. where lock_timestamp is null
  5. or [server_timestamp] - lock_timestamp > threshold;

  6. commit;
複製代碼
2) If update success (update count >= 1), enter that page and store that.  Otherwise, tell the user to re-try later.
3) When cancel or save, update the lock_timestamp to null where session_id = [my_session_id_plus_random_salt]

TOP

easy, use concurrency id field in addition to optimistic concurrency control.

TOP

咩 database?

TOP

Web application o既concurrency control係比較麻煩架.. 唔係單純transaction咁簡單...
用Optimistic Lock ...
十三 發表於 2012-4-5 17:23

一切都睇大佬想點做
細gei 話唔到事

TOP

提示: 作者被禁止或刪除 內容自動屏蔽

TOP

提示: 作者被禁止或刪除 內容自動屏蔽

TOP

提示: 作者被禁止或刪除 內容自動屏蔽

TOP

直接用db 個transaction 咪得囉

TOP

大路上係咁

又或者你唔睇FLAG呢個COLUMN, 可以睇LAST MODIFIED TIME。
好似你SELECT RECORD比人改之前, 你SELECT埋個LAST MODIFIED TIME, 你行UPDATE COMMAND時, 個WHERE CAUSE加埋你之前SELECT左既LAST MODIFIED TIME

TOP