Mysql 如何避免购物车和付款之间的商品超售

Mysql 如何避免购物车和付款之间的商品超售,mysql,database,paypal,database-schema,payment,Mysql,Database,Paypal,Database Schema,Payment,我有一个在线注册网站,人们可以在那里注册并支付一系列节目的费用。它的工作原理就像一个购物车,在那里他们添加所有他们想要注册的程序,然后“结帐” 在将参与者添加到购物车之前,我验证参与者是否满足年龄要求,以及计划中是否有空间。但是,我没有将它们添加到程序中,也没有对数据库进行任何更改 当他们点击“注册”时,我处理他们的购物车并将用户发送到paypal进行授权。我收到paypal的授权,然后写入我的数据库,注册并支付他们的程序,同时收取费用 但是,如果两个人在他们的列表中有相同的程序/项目,而它恰好

我有一个在线注册网站,人们可以在那里注册并支付一系列节目的费用。它的工作原理就像一个购物车,在那里他们添加所有他们想要注册的程序,然后“结帐”

在将参与者添加到购物车之前,我验证参与者是否满足年龄要求,以及计划中是否有空间。但是,我没有将它们添加到程序中,也没有对数据库进行任何更改

当他们点击“注册”时,我处理他们的购物车并将用户发送到paypal进行授权。我收到paypal的授权,然后写入我的数据库,注册并支付他们的程序,同时收取费用

但是,如果两个人在他们的列表中有相同的程序/项目,而它恰好是最后一个。我不知道如何处理这件事

我是否再次验证所有程序在授权和接受付款之间是否有空间,或者是否向数据库中的注册表添加处理字段?还是有更好的办法

这是我的模式的一个图像。

我一直看到在线电影票销售在你表示想买票时使用“等待逻辑”,所以在收集任何付款信息之前。他们把票持有5到15分钟。您的案例是否需要某种保留逻辑?是的,我在想也许我需要另一个表来
保留保留
,直到它们被处理。然后,我需要更改我的
spaceAvailable
呼叫,以添加
hold reservations
。这只是我的一个猜测,我确信有一个最佳实践或设计模式可以做到这一点,我在任何地方都找不到。我也不确定如何一致地删除保留。我认为另一个可行的选择是透视表中的
处理
字段。