4 votes

Est-ce que le commit ou le rollback active implicitement l'autocommit dans le mysqli de PHP ?

Je fais des transactions en PHP avec la classe mysqli et je trouve la documentation de autocommit() terriblement incomplète. Je déduis des exemples que le fait de mettre autocommit à false exécute implicitement une "transaction de début". Est-ce correct ? Plus important encore, je ne vois pas où autocommit est remis à true, alors que je suppose qu'il devrait l'être après la fin d'une transaction. Cela se produit-il automatiquement lorsque les méthodes commit() ou rollback() sont appelées ?

2voto

Explosion Pills Points 89756

Il n'effectue pas implicitement un START TRANSACTION car il effectue des transactions ad hoc : http://dev.mysql.com/doc/refman/5.0/en/commit.html

Avec autocommit(false) chaque fois que vous exécutez une requête d'écriture, vous devez COMMIT pour qu'il soit mis à jour de façon permanente sur le disque. Ceci est vrai pour toutes les requêtes de cette connexion à partir de ce moment-là. Avec autocommit(true) si vous utilisez START TRANSACTION exécuter une mise à jour, exécuter COMMIT puis lancez une autre mise à jour, les deux Les mises à jour seront appliquées immédiatement (c'est-à-dire qu'il n'y aura pas de deuxième mise à jour). COMMIT est nécessaire).

autocommit ne sera jamais réinitialisé à true mais elle n'est définie que par session (session MySQL, pas session PHP).

0voto

Markus Netz Points 1

Autocommit(FALSE) restera faux pour les requêtes suivantes. Après avoir effectué un commit-statement, l'autocommit reviendra à true. Je ne suis pas sûr du rollback si cela fait la même chose. J'utilise cette méthode depuis quelques années et elle a toujours bien fonctionné.

Si vous voulez de la cohérence dans votre db, c'est la bonne solution.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X