Может ли произойти обрыв связи в момент записи нескольких товаров в БД?
Работаю над созданием интернет-магазина. Предполагаю, что вопрос мой касается особенностей работы MySQL сервера.
Суть:
В момент формирования заказа происходит 2 манипуляции:
1. Создается новый заказ в таблице `orders`
2. По `id` вновь созданного заказа записываем в таблицу `order_details` параметры товаров данного заказа ( id товара, количество, цену продажи).
Предположим, в заказе 30-40 позиций. Может ли так случиться, что в процессе наполнения таблицы `order_details` произойдет разрыв соединения (или еще какая неполадка), в результате чего, состав заказа будет сохранен не полностью?
Если да, то как этого можно избежать? И стоит ли предусматривать "обработку" таких ситуаций?
Используемый движок таблиц - MyISAM.
Все придумано еще лет 50 назад.
Есть такое понятие "транзакция".
Она может состоять из нескольких отдельных операций.
Но.
Транзакция или вся целиком завершается.
Или вся целиком отменяется (это называется "откат транзакции").
В любом случае или все 100% операций будут выполнены.
Или
Все 100% операций будут не выполнены.
Может произойти все что угодно. Как правило такие ситуации решаются с использованием транзакций. Но для их использования стоит перейти с MyISAM на InnoDB
Более подробнее о них можно почитать Тут
Конкретно в Вашем случае стоит перейти
Может ли произойти обрыв связи в момент записи нескольких товаров в БД?
Может.
Если да, то как этого можно избежать?
На 100% никак не избежать. Уборщица всегда может случайно выдернуть сервер из розетки.
И стоит ли предусматривать "обработку" таких ситуаций?
Используйте механизм транзакций. Тем самым вы гарантируете, что либо все запросы будут выполнены, либо ни один. Придётся либо отказаться от MyISAM, либо самому реализовывать механизм транзакций на уровне кода приложения (скорее всего, плохая идея), либо смириться и оставить всё как есть.