Я пытаюсь создать приложение, которое может продавать подарочные карты, но я опасаюсь непротиворечивости данных, поэтому позвольте мне объяснить, что я имею в виду:
У меня есть 3 таблицы
транзакций (id, created_date) ,
карт (id, name) и
ваучеров (id, код, card_id, transaction_id) .
База данных содержит множество карт и ваучеров, и каждый ваучер принадлежит одной карте. Пользователь захочет выбрать карту для покупки и количество.
Таким образом, приложение выберет ваучеры в соответствии с выбранной картой и ОГРАНИЧЕНИЕ в соответствии с количеством, а затем создаст новую транзакцию и добавит transaction_id в выбранную ваучеры, чтобы пометить их как купленные карты для этой новой транзакции.
Итак, чего я боюсь, так это того, что если несколько пользователей отправят один и тот же запрос на покупку для одной и той же карты в одно и то же время, тогда произойдет конфликт данных произойти? и как лучше всего это исправить?
В настоящее время я использую MySQL 8 Community Edition с движком InnoDB для всех таблиц.
Я ищу, могу ли я создать несколько своего рода очередь, которая активирует транзакции одну за другой без конфликтов, даже если это означает, что пользователям придется ждать, пока они дойдут до своей очереди в очереди.
Заранее спасибо