請教一下資料庫同步的問題

看板Database作者 (158)時間14年前 (2011/10/04 15:45), 編輯推噓1(102)
留言3則, 2人參與, 最新討論串1/2 (看更多)
假設一個訂票系統有一個table:座位 欄位有日期、座位號碼、是否available、訂位人的ID 現在有兩個user: A, B進入了訂票系統 接著發生了以下事件 1. A select此table發現有五個空位 2. B select此table發現有五個空位 3. A 訂了四個位子,並且把這四個位子的狀態update為unavailable 4. A結束transaction 5. 現在B以為有五個空位,於是訂了兩個位子 => 發生重複訂位的問題 請問一下,有什麼辦法解決這個同步的問題? 我想到的方法是在事件1發生時讓A對table作lock,然後B要等到A結束transaction 才能select 不過這方法效率似乎不好,有更好的方法嗎? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.42.9.22

10/05 20:40, , 1F
訂的瞬間 一定要檢查當時的情況 是否還有空位
10/05 20:40, 1F

10/06 21:20, , 2F
如果是oracle的話,可以利用for update將查詢的row lock
10/06 21:20, 2F

10/06 21:26, , 3F
查詢要開放給所有人,但訂位時要LOCK要訂位的ROW
10/06 21:26, 3F
文章代碼(AID): #1EYhc8rN (Database)
文章代碼(AID): #1EYhc8rN (Database)