(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 consignarán los cambios realizados en la base de datos a través de una instancia de PDO hasta que se finalice la transacción con una llamada a PDO::commit(). Una llamada a PDO::rollBack() revertirá todos los cambios de la base de datos y devolverá la conexión al modo 'autocommit'.
Algunas bases de datos, incluida MySQL, ejecután automáticamente un CCOMMIT implícito cuando una sentencia de definición de lenguaje de base de datos (DDL), tales como DROP TABLE o CREATE TABLE, se ejecutan en una transacción. El CCOMMIT implícito prevendrá de la reversión de cualquier otro cambio dentro del límite de la transacción.
Devuelve TRUE
en caso de éxito o FALSE
en caso de error.
Ejemplo #1 Revertir una transacción
El siguiente ejemplo inicia una transacción y ejecuta dos sentencias que modifican la base de datos antes de revertir los cambios. En MySQL, sin embargo, la sentencia DROP TABLE automáticamente consigna la transacción, con lo cual, ninguno de los cambios en la transacción son revertidos.
<?php
/* Iniciar una transacción, desactivando 'autocommit' */
$gbd->beginTransaction();
/* Cambiar el esquema y datos de la base de datos */
$gsent = $gbd->exec("DROP TABLE fruit");
$gsent = $gbd->exec("UPDATE dessert
SET name = 'hamburger'");
/* Reconocer un error y revertir los cambios */
$gbd->rollBack();
/* La conexión a la base de datos ahora vuelve al modo 'autocommit' */
?>