PDO
PHP Manual

PDO::beginTransaction

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

PDO::beginTransaction Inicia una transacción

Descripción

bool PDO::beginTransaction ( void )

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.

Valores devueltos

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

Ejemplos

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

Ver también


PDO
PHP Manual