CakeFest 2024: The Official CakePHP Conference

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 autocommit et pour valider et annuler les transactions.

Exemple #1 Définir le mode autocommit via SQL ou via l'API

<?php

mysqli_report
(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$mysqli = new mysqli("example.com", "user", "password", "database");

// 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
$mysqli->query('SET AUTOCOMMIT = 0');

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 autocommit, pour valider ou annuler une transaction.

Exemple #2 Validation et annulation d'une transaction

<?php

mysqli_report
(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$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

add a note

User Contributed Notes

There are no user contributed notes for this page.
To Top