Можно ли выполнять транзакции и откаты базы данных MySQL с помощью php?

StackOverflow https://stackoverflow.com/questions/934254

  •  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.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top