PDO::beginTransaction inicia uma transação (PHP 5 >= 5.1.0, PECL pdo >= 0.1.0)
bool DOP::beginTransaction (void)
Desligue o modo de confirmação automática. Quando o modo autocommit está desativado, as alterações feitas no banco de dados por meio de instâncias de objetos PDO não são confirmadas até que PDO::commit() seja chamado para finalizar a transação.
Chamar PDO::rollBack() reverterá as alterações feitas no banco de dados e retornará a conexão do banco de dados para o modo autocommit.
Alguns bancos de dados, incluindo MySQL, executam automaticamente um commit de transação implícito ao emitir uma instrução DDL como DROP TABLE ou CREATE TABLE.
A confirmação implícita impedirá que você reverta quaisquer outras alterações no escopo desta 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.
Mas no MySQL, a instrução DROP TABLE confirma automaticamente a transação para que quaisquer alterações nesta transação não sejam revertidas.
<?php/* Inicia uma transação e desativa o envio automático*/$dbh->beginTransaction();/* Altera a estrutura e os dados do banco de dados*/$sth = $dbh->exec("DROP TABLE fruta");$ sth = $dbh->exec("UPDATE sobremesa SET name = 'hamburger'");/* Reconhecer o erro e reverter as alterações*/$dbh->rollBack();/* A conexão com o banco de dados agora está de volta ao modo autocommit*/?>