Alexey-V-Ivanov
@Alexey-V-Ivanov
Экономист->Программист

Может ли произойти обрыв связи в момент записи нескольких товаров в БД?

Работаю над созданием интернет-магазина. Предполагаю, что вопрос мой касается особенностей работы MySQL сервера.
Суть:
В момент формирования заказа происходит 2 манипуляции:
1. Создается новый заказ в таблице `orders`
2. По `id` вновь созданного заказа записываем в таблицу `order_details` параметры товаров данного заказа ( id товара, количество, цену продажи).

Предположим, в заказе 30-40 позиций. Может ли так случиться, что в процессе наполнения таблицы `order_details` произойдет разрыв соединения (или еще какая неполадка), в результате чего, состав заказа будет сохранен не полностью?

Если да, то как этого можно избежать? И стоит ли предусматривать "обработку" таких ситуаций?
Используемый движок таблиц - MyISAM.
  • Вопрос задан
  • 243 просмотра
Решения вопроса 1
qonand
@qonand
Software Engineer
Может произойти все что угодно. Как правило такие ситуации решаются с использованием транзакций. Но для их использования стоит перейти с MyISAM на InnoDB
Более подробнее о них можно почитать Тут
Конкретно в Вашем случае стоит перейти
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
27cm
@27cm
TODO: Написать статус
Может ли произойти обрыв связи в момент записи нескольких товаров в БД?

Может.

Если да, то как этого можно избежать?

На 100% никак не избежать. Уборщица всегда может случайно выдернуть сервер из розетки.

И стоит ли предусматривать "обработку" таких ситуаций?

Используйте механизм транзакций. Тем самым вы гарантируете, что либо все запросы будут выполнены, либо ни один. Придётся либо отказаться от MyISAM, либо самому реализовывать механизм транзакций на уровне кода приложения (скорее всего, плохая идея), либо смириться и оставить всё как есть.
Ответ написан
Комментировать
muhammad_97
@muhammad_97
PHP-разработчик
Используйте транзакции
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы