
Транзакции в MySQL
Транзакция – это механизм, который позволяет интерпретировать множественные изменения в базе данных как единую операцию. Либо будут приняты все изменения, либо все они будут отвергнуты. Ни из какого другого сеанса невозможно получить доступ к таблице, пока есть открытая транзакция, в рамках которой выполняются какие-либо изменения в этой таблице. Если вы в своем сеансе попробуете сделать выборку данных сразу же после их изменения, все выполненные изменения будут доступны.
Такой механизм базы данных с поддержкой транзакций, как InnoDB или BDB, начинает транзакцию по команде start transaction. Завершается транзакция при подтверждении или отмене изменений. Завершить транзакцию можно двумя командами. Команда commit сохраняет все изменения в базе данных. Команда rollback отменяет все изменения.
В примере ниже создается таблица с поддержкой транзакций, в нее вставляются данные, затем запускается транзакция, в рамках которой данные удаляются, и в заключение выполняется откат транзакции (отмена удаления):
Код доступен только после покупки курса MySQL с нуля.
Поскольку произошел откат транзакции, данные из таблицы не были удалены.
А если бы вместо rollback мы написали commit, то обе строки были бы удалены.
Транзакции требуются тогда, когда нужно чтобы несколько запросов точно применились и выполнились "одновременно", либо не выполнился ни один из них, если что-то пойдёт не так.
В качестве примера можно привести систему оплаты на каком-то сайте. В момент покупки заказ должен быть помечен как оплаченный, и вместе с этим, одновременно нужно списать деньги с баланса пользователя. Если что-то одно не выполнится - будет либо пользователь без купленного товара и без денег, либо магазин без товара и без денег. А с помощью транзакций мы можем такого запросто избежать.
Читайте также
-
Взаимодействие PHP и MySQLПримеры создания запросов из PHP к базам данных MySQL и обра...
-
Базы данных и веб-формыПримеры взаимодействия с базой данных с использованием веб-ф...
-
Регулярные выражения в PHPРабота с регулярными выражениям в PHP с реальными примерами....
-
Функции базы данных MySQLКак и в PHP-сценариях, в запросах к базе данных MySQL можно ...
-
Расширенная выборка данныхМы уже рассматривали способ соединения таблиц в инструкции S...





Комментарии (0)