"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Quand une transaction n’est-elle pas automatiquement annulée dans SQL ?

Quand une transaction n’est-elle pas automatiquement annulée dans SQL ?

Publié le 2024-11-07
Parcourir:923

When is a Transaction Not Automatically Rolled Back in SQL?

Annulation automatique des transactions

La question tourne autour du comportement des transactions lorsqu'une erreur se produit dans un bloc d'instructions SQL entouré par START TRANSACTION et ENGAGER LA TRANSACTION. L'OP remarque que lorsqu'une erreur de syntaxe est rencontrée avant l'instruction COMMIT TRANSACTION, la transaction est automatiquement annulée.

Mécanisme d'annulation de transaction

Non, les transactions ne sont pas annulées revenir immédiatement après avoir rencontré une erreur. Cependant, certaines applications clientes peuvent adopter des politiques spécifiques pour la gestion des erreurs.

Par exemple, dans le client de ligne de commande MySQL :

  • Une erreur lors de l'exécution est généralement interrompt le processus d'exécution et entraîne la fermeture du client.
  • Quitter pendant qu'une transaction est en cours entraîne automatiquement l'annulation de la transaction.

Personnalisation de la politique de restauration

Lorsque vous créez vos propres applications, vous contrôlez les politiques d'annulation des transactions. Cependant, notez qu'il existe des exceptions où une restauration est appliquée :

  1. Déconnexion du client : la fermeture ou la déconnexion de la base de données lance toujours une restauration de transaction.
  2. Délai d'attente de blocage/verrouillage : lorsqu'un blocage ou un délai d'attente de verrouillage se produit, une restauration implicite a lieu.

Pour tous les autres scénarios, si une erreur est rencontrée lors d'une transaction , l'erreur est renvoyée et le développeur a le choix de valider ou d'abandonner la transaction.

Déclaration de sortie Cet article est réimprimé à l'adresse : 1729746768. En cas d'infraction, veuillez contacter [email protected] pour le supprimer.
Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3