作者lancer7 (158)
看板Database
标题请教一下资料库同步的问题
时间Tue Oct 4 15:45:09 2011
假设一个订票系统有一个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
1F:推 dontblame:订的瞬间 一定要检查当时的情况 是否还有空位 10/05 20:40
2F:→ kobedisel:如果是oracle的话,可以利用for update将查询的row lock 10/06 21:20
3F:→ kobedisel:查询要开放给所有人,但订位时要LOCK要订位的ROW 10/06 21:26