Инициализация транзакции

# PDO::beginTransaction

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

PDO::beginTransaction — Инициализация транзакции

### Описание

public function PDO::beginTransaction(): bool

Выключает режим автоматической фиксации транзакции. В то время как режим автоматической фиксации выключен, изменения, внесённые в базу данных через объект экземпляра PDO, не применяются, пока вы не завершите транзакцию, вызвав PDO::commit(). Вызов PDO::rollBack() откатит все изменения в базе данных и вернёт соединение к режиму автоматической фиксации.

Некоторые базы данных, включая MySQL, автоматически выполняют неявную фиксацию, когда выражения языка описания данных (DDL), такие как DROP TABLE или CREATE TABLE, находятся внутри транзакции. Неявная фиксация предотвратит вам откат любых изменений, сделанных в этой транзакции.

### Список параметров

Сигнатура функции не содержит параметров.

### Возвращаемые значения

Функция возвращает `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();

    /* Соединение с базой данных снова в режиме автоматической фиксации */
    ?>

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

- PDO::commit() - Фиксирует транзакцию
- PDO::rollBack() - Откат транзакции
- Транзакции и автоматическая фиксация

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open