PDO::beginTransaction
(PHP 5 >= 5.1.0, PHP 7, PHP 8, PECL pdo >= 0.1.0)
PDO::beginTransaction —
Inicia una transacción
Descripción
public PDO::beginTransaction():
bool
Algunas bases de datos, incluyendo MySQL, ejecutarán automáticamente un COMMIT
cuando se ejecute una consulta de definición de lenguaje de base de datos (DDL) como
DROP TABLE o CREATE TABLE dentro de una transacción. Este COMMIT implícito
impedirá anular otras modificaciones realizadas en esta transacción.
Parámetros
Esta función no contiene ningún parámetro.
Valores devueltos
Esta función retorna true
en caso de éxito o false
si ocurre un error.
Ejemplos
Ejemplo #1 Anular una transacción
El siguiente ejemplo inicia una transacción y ejecuta dos consultas
que modifican la base de datos antes de anular las modificaciones. En MySQL,
sin embargo, la consulta DROP TABLE validará automáticamente la transacción,
por lo que ninguna de las modificaciones de la transacción será anulada.
<?php
/* Inicia una transacción, desactivando el auto-commit */
$dbh->beginTransaction();
/* Modificación del esquema de la base de datos y de los datos */
$sth = $dbh->exec("DROP TABLE fruit");
$sth = $dbh->exec("UPDATE dessert
SET name = 'hamburger'");
/* Se detecta un error y se anulan las modificaciones */
$dbh->rollBack();
/* La conexión a la base de datos está ahora de vuelta en modo auto-commit */
?>