Maison  >  Article  >  base de données  >  L'omission de COMMIT TRANSACTION annule-t-elle automatiquement les transactions ?

L'omission de COMMIT TRANSACTION annule-t-elle automatiquement les transactions ?

Susan Sarandon
Susan Sarandonoriginal
2024-10-24 15:12:02984parcourir

Does COMMIT TRANSACTION Omission Automatically Rollback 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 :

  • La fermeture de la connexion à la base de données annule toujours les transactions en cours.
  • Un blocage ou un délai d'attente de verrouillage déclenche également implicitement une restauration.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn