Mysql
 sql >> Base de données >  >> RDS >> Mysql

Transactions ferroviaires

Si vous avez un mélange de code qui nécessite des transactions explicites et du code qui peut s'appuyer sur la validation automatique, vous ne devriez peut-être pas désactiver la validation automatique pour toutes les connexions. Vous êtes sur la bonne voie en vous demandant si cela aura un impact sur d'autres codes. Si vous désactivez la validation automatique, mais que l'autre code ne sait pas qu'il doit s'engager pour que son travail soit validé, cela posera un problème. Le travail non validé est annulé à la fermeture de la connexion.

Vous devez savoir que le moteur de stockage par défaut pour MySQL est MonISAM , qui ne prend pas du tout en charge les transactions. Lorsque vous apportez des modifications à une table qui utilise MyISAM, les modifications sont effectivement validées immédiatement, quelles que soient vos demandes explicites de début et de fin de transactions, et quel que soit l'état de la validation automatique. Ainsi, vous ne pourrez pas revenir en arrière quoi qu'il arrive, sauf si vous avez créé vos tables à l'aide du InnoDB moteur de stockage (ou d'autres moteurs de stockage sécurisés pour les transactions tels que BDB ).

C'est inutile pour désactiver le mode autocommit pour utiliser les transactions dans MySQL. Commencez simplement une transaction explicitement. Les instructions SQL suivantes feront partie d'une transaction jusqu'à ce que vous validiez ou annuliez cette transaction, quelle que soit la valeur d'autocommit sur votre connexion actuelle.

http://dev.mysql.com/doc/refman/5.0 /fr/commit.html dit :