PDO::rollBack
(PHP 5 >= 5.1.0, PHP 7, PHP 8, PECL pdo >= 0.1.0)
PDO::rollBack —
Откат транзакции
Описание
public PDO::rollBack():
bool
Если в СУБД включён режим автофиксации изменений, эта функция восстановит этот
режим после отката.
Некоторые СУБД, включая MySQL, автоматически неявно фиксируют изменения, когда
встречаются выражения языка определения базы данных (DDL), выполняемые в рамках
транзакции. Эта неявная фиксация делает невозможным откат других изменений,
сделанных в рамках этой транзакции.
Список параметров
У этой функции нет параметров.
Возвращаемые значения
Возвращает true
в случае успешного выполнения или false
в случае возникновения ошибки.
Ошибки
Если активной транзакции нет, будет выброшено исключение PDOException.
Замечание: Исключение будет вызвано, даже если атрибут PDO::ATTR_ERRMODE
не выставлен в PDO::ERRMODE_EXCEPTION
.
Примеры
Пример #1 Откат транзакции
В следующем примере создаётся транзакция и выполняются два запроса, которые
модифицируют данные в базе, а затем база возвращается к исходному
состоянию. В MySQL, тем не менее, выражение DROP TABLE автоматически фиксирует
изменения, поэтому их откат не произойдёт.
<?php
/* Начинаем транзакцию, отключение автоматической фиксации */
$dbh->beginTransaction();
/* Изменяем схему базы данных и данные в таблицах */
$sth = $dbh->exec("DROP TABLE fruit");
$sth = $dbh->exec("UPDATE dessert
SET name = 'hamburger'");
/* Осознаем свою ошибку и откатываем транзакцию */
$dbh->rollBack();
/* База данных возвращается в режим автофиксации */
?>