PDO::beginTransaction

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

PDO::beginTransaction Inicia una transacción

Descripción

publicPDO::beginTransaction(): 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

$gbd->beginTransaction();


$gsent = $gbd->exec("DROP TABLE fruit");
$gsent = $gbd->exec("UPDATE dessert
SET name = 'hamburger'"
);


$gbd->rollBack();


?>

Ver también

To Top