Mar*_*ark 1 mysql database transactions insert
我正在尝试找出最好的方法来停止我的应用程序中的双重“预订”。
我有一个唯一ID的表,每个表只能出售一次。
我当前的想法是使用事务检查所选产品是否可用,然后将其插入到“状态”列中以表示已被“保留”,同时插入“更新时间”,然后用户继续操作。支付我将状态更新为“出售”。
每隔10分钟,我都会进行一次cron作业检查,以检查“状态” =“保留”,该检查已在10多分钟前进行了更新,并删除了这些行。
有没有更好的办法?我从未使用过交易(我刚刚听到过类似的词),所以如果有人可以解释我将如何做到这一点,那将是王牌。
尽管这里有其他建议,但交易并不是完整的解决方案。
听起来您在这里有一个Web应用程序,选择和购买预订需要几个页面(步骤)。这意味着您将不得不跨两个页面来打开一个事务,这是不可能的。
您的方法(状态列)是正确的,但是,我将以不同的方式实施。代替状态列,添加两列:reserved_by和reserved_ts。
reserved_by为用户或会话的主键,并设置reserved_ts为now()。reserved_ts无效或过期超过10分钟的产品。(实际上,我会比您告诉用户的情况要早几分钟,以避免可能出现的比赛情况。)| 归档时间: |
|
| 查看次数: |
2124 次 |
| 最近记录: |