#php #mysql
#php #mysql
Вопрос:
Возможно ли, что мой код, который вставляет данные на удаленный сервер MySQL, успешно выполняет запрос (в удаленной таблице появляется новая строка), но после этого сеть выходит из строя, и ответ от сервера не поступает в скрипт, для которого это будет выглядеть так, как будто вставка завершилась неудачно?
Ответ №1:
Да, это возможно. Ничто в том, что не удалось доставить ответ клиенту, не помешало бы серверу успешно завершить операцию, предполагая, конечно, что включена функция «автокоммит» или тому подобное.
Комментарии:
1. Но тогда даже перенос вставки в транзакцию (например, без автоматической фиксации) не гарантирует, что скрипт получит ответ?
2. Нет, я не думаю, что вы можете на 100% гарантировать, что получите ответ. Все, что вы можете сделать с транзакцией, это убедиться, что операция не произойдет (поскольку вы этого не
commit
сделаете), если вы не получите ответ отinsert
.3. Итак, единственный надежный способ убедиться, что повторяющиеся данные не вставлены, — это добавить какой-то уникальный индекс?