我正在开发一个拍卖网站。我已经编写了自己的拍卖系统。拍卖会在特定的时间段内运行,用户会出价。结束时间出价最高的人赢得拍卖(就像 ebay 一样)。当用户出价时,数据库检查是否是最高出价,如果是,则出价,否则不出价。
一切都很好,但问题是,我把两台笔记本电脑放在一边,从不同的账户登录,并在准确的时间提交了出价,两个出价都被放置(两个出价都高于当前的最高价,而且都是平等的)。不能对同一个产品进行两次相同的投标,对吗?如果两个用户同时提交投标,就会发生这种情况。
谁能说出摆脱这个问题的逻辑?
您需要实现一种方法来管理对数据库的并发写入。有几种方法可以实现这一目标。我建议你从这里开始:http ://en.wikipedia.org/wiki/Lock_%28database%29
我认为,如果您使用时间戳来确定提交投标的确切时间点,您将无法在完全相同的时间提交投标。时间戳以毫秒为单位,这将是一个小奇迹。
但如果发生这种情况,您可以在两个出价之间随机选择。