Фиксирует транзакцию

# PDO::commit

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

PDO::commit — Фиксирует транзакцию

### Описание

public function PDO::commit(): bool

Фиксирует транзакцию, возвращая соединение с базой данных в режим автоматической фиксации до тех пор, пока следующий вызов PDO::beginTransaction() не начнёт новую транзакцию.

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

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

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

Функция возвращает `true`, если выполнилась успешно, или `false`, если возникла ошибка.

### Ошибки

Вызывает исключение PDOException, если нет активной транзакции.

> Замечание: Исключение выбрасывается, даже если для атрибута `PDO::ATTR_ERRMODE` не установили режим `PDO::ERRMODE_EXCEPTION`.

### Примеры

Пример #1 Фиксация обычной транзакции

    <?php
    /* Начало транзакции, отключение автоматической фиксации */
    $dbh->beginTransaction();

    /* Вставка множества записей по принципу "все или ничего" */
    $sql = 'INSERT INTO fruit
        (name, colour, calories)
        VALUES (?, ?, ?)';

    $sth = $dbh->prepare($sql);

    foreach ($fruits as $fruit) {
        $sth->execute(array(
            $fruit->name,
            $fruit->colour,
            $fruit->calories,
        ));
    }

    /* Фиксация изменений */
    $dbh->commit();

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

Пример #2 Фиксация DDL-транзакции

    <?php
    /* Начало транзакции, отключение автоматической фиксации */
    $dbh->beginTransaction();

    /* Изменение схемы базы данных */
    $sth = $dbh->exec("DROP TABLE fruit");

    /* Фиксация изменений */
    $dbh->commit();

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

> Замечание: Не все базы данных позволяют транзакциям работать с DDL-выражениями: в некоторых генерируются ошибки, тогда как в других (включая MySQL) транзакция автоматически фиксируется после первого встретившегося DDL-выражения.

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

- PDO::beginTransaction() - Инициализация транзакции
- PDO::rollBack() - Откат транзакции
- Транзакции и автоматическая фиксация

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