PDO::beginTransaction
(PHP 5 >= 5.1.0, PHP 7, PHP 8, PECL pdo >= 0.1.0)
PDO::beginTransaction — Inicia uma transação
Descrição
Desativa o modo de envio automático. Enquanto o modo de envio automático estiver desativado, modificações feitas no banco de dados por meio da instância do objeto PDO não serão enviadas até que você finalize a transação chamando PDO::commit(). Chamar PDO::rollBack() reverterá todas as alterações no banco de dados e retornará a conexão para o modo de envio automático.
Alguns bancos de dados, incluindo o MySQL, emitem automaticamente um COMMIT implícito quando uma instrução de linguagem de definição de banco de dados (DDL) como DROP TABLE ou CREATE TABLE é emitida em uma transação. O COMMIT implícito impedirá que você reverta quaisquer outras alterações dentro do limite da transação.
Parâmetros
Esta função não possui parâmetros.
Erros/Exceções
Lança uma PDOException se já houver uma transação iniciada ou se o driver não suportar transações.
Note: Uma exceção será lançada mesmo quando o atributo
PDO::ATTR_ERRMODE
não forPDO::ERRMODE_EXCEPTION
.
Exemplos
Example #1 Reverter uma transação
O exemplo a seguir inicia uma transação e emite duas instruções que modificam o banco de dados antes de reverter as alterações. No MySQL, no entanto, a instrução DROP TABLE envia automaticamente a transação de modo que nenhuma das alterações na transação é revertida.
<?php
/* Inicia uma transação, desligando o envio automático */
$dbh->beginTransaction();
/* Altera esquema e dados do banco */
$sth = $dbh->exec("DROP TABLE fruit");
$sth = $dbh->exec("UPDATE dessert
SET name = 'hamburger'");
/* Reconhece o engano e desfaz o envio das alterações */
$dbh->rollBack();
/* A conexão do banco agora está de volta o modo de envio automático */
?>
Veja Também
- PDO::commit() - Envia uma transação
- PDO::rollBack() - Reverte uma transação
- Transações e envio automático