PDO::rollBack

(PHP 5 >= 5.1.0, PHP 7, PHP 8, PECL pdo >= 0.1.0)

PDO::rollBack Откат транзакции

Описание

public PDO::rollBack(): bool

Откатывает изменения в базе данных сделанные в рамках текущей транзакции, которая была создана методом PDO::beginTransaction().

Если в СУБД включён режим автофиксации изменений, эта функция восстановит этот режим после отката.

Некоторые СУБД, включая 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();

/* База данных возвращается в режим автофиксации */
?>

Смотрите также