PDO::beginTransaction
Справочное руководство по PHP PDO
PDO::beginTransaction Запускает транзакцию (PHP 5 >= 5.1.0, PECL pdo >= 0.1.0)
Описание
Синтаксис
bool PDO::beginTransaction ( void )
Отключает режим автоматической фиксации. Пока режим автоматической фиксации отключён, изменения, внесённые в базу данных через экземпляр объекта PDO, не будут зафиксированы до тех пор, пока транзакция не будет завершена вызовом PDO::commit().
Вызов PDO::rollBack() откатит изменения, внесённые в базу данных, и вернёт соединение с базой данных в режим автоматической фиксации.
Некоторые базы данных, включая MySQL, автоматически выполняют неявную фиксацию транзакции при выполнении инструкции DDL, такой как DROP TABLE или CREATE TABLE.
Эта неявная фиксация не позволит вам откатить любые другие изменения в рамках транзакции.
Возвращаемые значения
Возвращает TRUE при успехе или FALSE при неудаче.Примеры
Откат транзакции
В следующем примере перед откатом изменений запускается транзакция и выполняются две инструкции, изменяющие базу данных.
Однако в MySQL инструкция DROP TABLE автоматически фиксирует транзакцию, поэтому любые изменения в рамках этой транзакции не будут откатаны.
<?php
/* 开始一个事务,关闭自动提交 */
$dbh->beginTransaction();
/* 更改数据库架构及数据 */
$sth = $dbh->exec("DROP TABLE fruit");
$sth = $dbh->exec("UPDATE dessert
SET name = 'hamburger'");
/* 识别出错误并回滚更改 */
$dbh->rollBack();
/* 数据库连接现在返回到自动提交模式 */
?>
Другие расширения