Можно ли выполнять транзакции и откаты базы данных MySQL с помощью php?
-
06-09-2019 - |
Вопрос
пример:осуществление платежного перевода от пользователя А пользователю Б.Учетная запись пользователя А:-10 usd account пользователя B:+10 долларов США
если есть транзакция и что-то пойдет не так, все будет отменено.Таким образом, при транзакциях не произойдет, чтобы учетная запись пользователя A уменьшилась на 10, а учетная запись пользователя B не увеличилась на 10.
Я знаю, что люди, работающие с Java, повсеместно используют транзакции и откаты.Но я никогда не слышал, чтобы PHP-парни делали это.
Нет правильного решения
Другие советы
$db = new mysqli("localhost", "", "", "");
$db->autocommit(FALSE);
if ($db->query("INSERT ..."))
$db->commit();
else
$db->rollback();
Убедитесь, что ваши таблицы используют InnoDB
двигатель: MyISAM
не поддерживает транзакции.
Обновление комментариев:
InnoDB
является одним из двух основных механизмов хранения данных, используемых MySQL
, другой - MyISAM
.
MySQL
поставляется с InnoDB
поддержка встроена по умолчанию, и на самом деле для ее отключения требуются некоторые усилия.
Я никогда не слышал о MySQL
с InnoDB
отключено даже у самых дешевых хостеров.
Если вы используете pdo, он также поддерживает транзакции.
http://us2.php.net/manual/en/pdo.begintransaction.php
как уже было сказано, убедитесь, что вы используете механизм хранения innoDB.