我一直在搜索互联网,现在需要澄清一下。

我正在建立一个租车网站,客户可以在该网站上周末或一周预订豪华车。

我要解决的问题是创建一种方法,以防止2个人在同一日期预订同一辆汽车。我已阅读有关交易的内容,并想确认其工作原理。我读了很多文章,但是没有任何东西可以证实我的想法。

启动事务后,是否将数据临时插入数据库中,从而防止其他人插入相同的数据?还是只是将插入内容存储在用户浏览器中,并且仅在提交后才插入?

交易听起来像我需要的,但在继续进行之前,我只需要确认即可。否则,我需要其他解决方案。

在此先感谢您,我希望对那些花时间阅读它的人来说都是有意义的。

最佳答案

有两种方法可以解决此问题:

UNIQUE索引包含了汽车和预订时间,因此不可能用相同的组合创建两个记录:

INSERT INTO bookings (car_id, date, customer_id) VALUES (1, '2014-09-29', 1903)


如果在该日期有一个预先存在的预订,您的INSERT将失败并显示错误。此处的bookings表代表特定日期的特定汽车的可用性,如果已预订,则由客户预订。您可能需要添加另一层来表示多天的预订。

另外,预订表上的标志通常是NULL,但可以在预订时设置,尽管更新会检查它是否成功:

UPDATE bookings SET customer_id=1903 WHERE id=4535 AND customer_id IS NULL


这样一来,您将无法重新预订已经预订的汽车。

关于php - 租车双重预订预防,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27045192/

10-15 12:46