如何阻止两个人预约相同的预约时间

时间:2011-02-01 09:27:04

标签: asp.net sql-server

正如标题所述,我如何阻止两个用户预约相同的预约时间。

例如,两个用户登录,在屏幕上他们都可以看到下午1点的预约可用。他们都试图预约到预约时间。

如何阻止这种情况发生并确保只有一个用户可以预订,然后刷新屏幕以向其他用户显示下一个可用的预订时间。

感谢。

2 个答案:

答案 0 :(得分:3)

这是一个相当经典的用例。您只需在特定时间显示约会计划即可。这可以保持静态,或者您可以设置定期流程(例如,每五秒钟)以使用新信息更新计划。

然后,当用户/操作员决定预订空闲时间段时,它会尝试进行(原子)更新,如果其他人已经滑入(使用主键或其他一些唯一约束),该更新将失败。更新操作的原子性保证只有一个人可以预订时间段。如果更新有效,瞧,您已经预订了时间。

如果失败,请通知用户该事实,然后加载新的约会计划。

冲洗并重复,直到用户预订或他们徘徊,心怀不满。

答案 1 :(得分:0)

我认为这不是最佳选择。为什么不选择首次点击/先服务模式? 如果您有10个或更多用户查看同一页面,可能会发生什么?查看页面的用户并不意味着他将点击时间段。所以恕我直言等待用户真正点击,然后最终通知其他用户他们正在查看他们正在查看的时间段(当你回答时有人回答问题时,会发生StackOverFlow)