(PHP 5 >= 5.1.0, PECL pdo >= 0.1.0)
PDO::beginTransaction — Inicia una transacción
Desctiva el modo "autocommit". Mientras el modo "autocommit" esté desactivado, no se hará un commit con los cambios realizados en la base de datos a través de una instancia PDO hasta que se finalice la transacción con una llamada a PDO::commit(). Una llamada a PDO::rollBack() deshará todos los cambios de la base de datos y devolverá la conexión a modo "autocommit".
Algunas bases de datos, incluida MySQL, realizan automáticamente un "commit" implícito cuando una sentencia de definición de lenguaje de datos (DDL) tales como DROP TABLE o CREATE TABLE se ejecutan en una transacción. El "commit" implícito prevendrá deshacer cualquier otros cambios en el límite de la transacción.
Devuelve TRUE
en caso de éxito o FALSE
en caso de error.
Ejemplo #1 Deshacer una transacción
El siguiente ejemplo inicia una transacción y ejecuta dos sentencias que modifican la base de datos antes de deshacer los cambios. En MySQL, sin embargo, la sentencia DROP TABLE automáticamente hace un "commit" de la transacción, con lo cual ninguno de los cambios en la transacción son revertidos.
<?php
/* Inicia una transacción, desactivando "autocommit" */
$dbh->beginTransaction();
/* Cambia el esquema y datos de la base de datos */
$sth = $dbh->exec("DROP TABLE fruit");
$sth = $dbh->exec("UPDATE dessert
SET name = 'hamburger'");
/* Detecta un error y deshace los cambios */
$dbh->rollBack();
/* La conexión a la base de datos es devuelta y se vuelve a modo "autocommit" */
?>