Maison > Article > base de données > L'omission de COMMIT TRANSACTION annule-t-elle automatiquement les transactions ?
Retour automatique si COMMIT TRANSACTION est omise
Dans l'instruction SQL donnée :
START TRANSACTION; BEGIN; INSERT INTO prp_property1 (module_name,environment_name,NAME,VALUE) VALUES ('','production','','300000'); /** Assume there is syntax error SQL here...**/ Blah blah blah DELETE FROM prp_property1 WHERE environment_name = 'production'; COMMIT TRANSACTION;
La question se pose de savoir si la transaction est automatiquement annulée puisque l'instruction COMMIT TRANSACTION n'est jamais atteinte en raison d'une erreur de syntaxe.
Comportement d'annulation de transaction
Contrairement à l'hypothèse, les transactions ne sont pas automatiquement annulé après avoir rencontré une erreur. Ce comportement est généralement implémenté dans les paramètres de l'application client. Par exemple, le client de ligne de commande MySQL met fin à l'exécution et se ferme en cas d'erreur, ce qui entraîne l'annulation de toutes les transactions en cours.
Lors du développement d'applications personnalisées, les développeurs contrôlent les politiques d'annulation des transactions. Cependant, certaines exceptions existent :
En dehors de ces scénarios spécifiques, les erreurs ne provoquent pas automatiquement une restauration. L'erreur est renvoyée et le développeur est libre de décider de la prochaine action, y compris de valider la transaction malgré l'erreur.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!