PDO->beginTransaction()

PDO : Initialisation d’une transaction

Description

(PHP 5 >= 5.1.0, PECL pdo:0.1-1.0.3)

Désactive le mode auto-commit (validation automatique).Lorsque ce mode est désactivé, les modifications apportées à la base de données via l’instance de l’objet PDO ne sont pas validées tant que l’appel à la méthode PDO->commit () n’a pas été effectué. L’appel à la méthode PDO->rollback () annulera toutes les modifications apportées à la base de données et réactivera le mode auto-commit.

Certaines bases de données, y compris MySQL, exécuteront automatiquement un COMMIT lorsqu’une requête de définition de données (DDL) telle que DROP TABLE ou CREATE TABLE est exécutée dans une transaction. Le COMMIT implicite vous empêchera d’effectuer un roll back(annulation) des modifications apportées dans cette transaction.

Valeur de retour

En cas de succès renvoie TRUE, sinon renvoie FALSE.

Roll back (annulation) dans une transaction

L’exemple suivant commence une transaction et exécute deux requêtes qui modifient la base de données avant d’annuler les modifications. Avec MySQL, toutefois, la commande DROP TABLE validera automatiquement la transaction, et donc aucun changement engendré par la transaction ne sera annulé.

/* Commence une transaction et annule l’autocommit (validation automatique) */
$dbh->beginTransaction();/* Change le schéma et les données */
$sth = $dbh->exec(« DROP TABLE fruit »);
$sth = $dbh->exec(« UPDATE dessert
SET name = ’hamburger’ »);

/* Rencontre une erreur et annule les changements */
$dbh->rollBack();

/* La connexion à la base est maintenant revenue en mode auto-commit */