Support API pour les transactions
Le serveur MySQL supporte les transactions suivant le moteur de stockage utilisé. Depuis MySQL 5.5, le moteur de stockage par défaut est InnoDB. InnoDB a un support complet des transactions ACID.
Les transactions peuvent soit être contrôlées en utilisant SQL, soit par des appels API. Il est recommandé d'utiliser les appels API pour activer ou désactiver le mode auto-commit et pour valider et annuler les transactions.
Exemple #1 Définir le mode auto-commit via SQL ou via l'API
<?php
$mysqli = new mysqli("example.com", "user", "password", "database");
if ($mysqli->connect_errno) {
echo "Echec de la connexion à MySQL: (" . $mysqli->connect_errno . ") " . $mysqli->connect_error;
}
/* Recommandé : utilisation de l'API pour contrôler la configuration des transactions */
$mysqli->autocommit(false);
/* Ne sera pas monitoré et reconnu par le plugin de réplication et de balance de charge */
if (!$mysqli->query('SET AUTOCOMMIT = 0')) {
echo "Echec de la requête : (" . $mysqli->errno . ") " . $mysqli->error;
}
?>
Les paquets de fonctionnalités additionnelles, comme les plugins de réplication et de balance de charge peuvent monitorer les appels API. Le plugin de réplication offre une sécurité sur les transactions lors de la balance de charge, si les transactions sont contrôlées avec des appels API. La sécurité des transactions lors de la balance de charge n'est pas disponible si les requêtes SQL sont utilisées pour définir le mode auto-commit, pour valider ou annuler une transaction.
Exemple #2 Validation et annulation d'une transaction
<?php
$mysqli = new mysqli("example.com", "user", "password", "database");
$mysqli->autocommit(false);
$mysqli->query("INSERT INTO test(id) VALUES (1)");
$mysqli->rollback();
$mysqli->query("INSERT INTO test(id) VALUES (2)");
$mysqli->commit();
?>
Veuillez noter que le serveur MySQL ne peut pas annuler toutes les requêtes. Quelques requêtes requièrent une validation implicite.
Voir aussi
- mysqli::autocommit()
- mysqli_result::commit()
- mysqli_result::rollback()
Document créé le 30/01/2003, dernière modification le 26/10/2018
Source du document imprimé : https://www.gaudry.be/php-rf-mysqli.quickstart.transactions.html
L'infobrol est un site personnel dont le contenu n'engage que moi. Le texte est mis à disposition sous licence CreativeCommons(BY-NC-SA). Plus d'info sur les conditions d'utilisation et sur l'auteur.
Références
Ces références et liens indiquent des documents consultés lors de la rédaction de cette page, ou qui peuvent apporter un complément d'information, mais les auteurs de ces sources ne peuvent être tenus responsables du contenu de cette page.
L'auteur de ce site est seul responsable de la manière dont sont présentés ici les différents concepts, et des libertés qui sont prises avec les ouvrages de référence. N'oubliez pas que vous devez croiser les informations de sources multiples afin de diminuer les risques d'erreurs.