Задать вопрос
Alexey-V-Ivanov
@Alexey-V-Ivanov
Экономист->Программист

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

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

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

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

Может.

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

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

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

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

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

Похожие вопросы