【发布时间】:2020-05-27 09:54:16
【问题描述】:
我正在尝试创建一个能够销售礼品卡的应用程序,但我担心数据的一致性,所以让我解释一下我的意思:
我有 3 张桌子
交易(id,created_date),
卡片(ID、姓名)和
凭证(id、code、card_id、transaction_id)。
数据库包含许多卡和凭证,每个凭证属于一张卡。 用户会想要选择一张卡来购买并选择数量。
因此,应用程序将根据所选卡选择凭证并根据数量限制,然后创建一个新交易并将 transaction_id 添加到所选凭证中,以将其标记为此次新交易的已购买卡。
那么,我担心的是,如果多个用户同时发送同一张卡的相同购买请求,那么会不会发生一些数据冲突呢?以及解决此问题的最佳方法是什么?
我目前正在为所有表使用带有 InnoDB 引擎的 MySQL 8 Community Edition。
我正在寻找的是,我是否可以创建某种队列来逐个激活事务而不会发生冲突,即使这意味着用户将不得不等到轮到他们在队列中。
提前致谢
【问题讨论】:
标签: php mysql laravel transactions queue