PDO::beginTransaction

(PHP 5 >= 5.1.0, PHP 7, PECL pdo >= 0.1.0)

PDO::beginTransaction Inicia una transacción

Descripción

public PDO::beginTransaction ( void ) : bool

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 COMMIT implícito cuando una sentencia de definición de lenguaje de base de datos (DDL), tal como DROP TABLE o CREATE TABLE, se ejecutan en una transacción. El COMMIT implícito prevendrá de la reversión de cualquier otro cambio dentro del límite de la transacción.

Valores devueltos

Devuelve TRUE en caso de éxito o FALSE en caso de error.

Errores/Excepciones

Lanza una PDOException si ya hay una transacción iniciada o el controlador no admite transacciones.

Nota: Se emite una excepción inclusi cuando el atributo PDO::ATTR_ERRMODE no es PDO::ERRMODE_EXCEPTION.

Ejemplos

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' */
?>

Ver también