Maison > base de données > tutoriel mysql > SQL Server annule-t-il des transactions entières en cas d'erreur dans les commandes par lots ?

SQL Server annule-t-il des transactions entières en cas d'erreur dans les commandes par lots ?

Barbara Streisand
Libérer: 2025-01-10 22:35:44
original
212 Les gens l'ont consulté

Does SQL Server Roll Back Entire Transactions on Error in Batched Commands?

Traitement des transactions SQL Server : comportement de restauration des erreurs

Assurez-vous de prendre en compte le comportement transactionnel de votre base de données lors de l'exécution de plusieurs instructions SQL en tant que commande batch unique. Plus précisément, si une ou plusieurs instructions rencontrent une erreur, la totalité de la transaction doit-elle être annulée ?

Dans SQL Server, le comportement par défaut consiste à annuler l'intégralité de la transaction en cas d'échec. Cependant, dans certains cas (comme l'exemple fourni dans la question) :

<code class="language-sql">BEGIN TRAN;
INSERT INTO myTable (myColumns ...) VALUES (myValues ...);
INSERT INTO myTable (myColumns ...) VALUES (myValues ...);
INSERT INTO myTable (myColumns ...) VALUES (myValues ...);
COMMIT TRAN;</code>
Copier après la connexion

Lorsque l'instruction SQL est envoyée sous la forme d'une commande à chaîne unique, le comportement de restauration peut ne pas être celui attendu.

Pour garantir que les déclarations ayant échoué déclenchent automatiquement une restauration, vous pouvez utiliser l'instruction SET XACT_ABORT ON avant de démarrer la transaction. Cette commande modifie le comportement de transaction de la session afin que toute erreur rencontrée entraîne immédiatement l'annulation de la transaction. Dans ce cas, l’opération d’insertion sera annulée et la transaction ne se terminera pas correctement.

En définissant XACT_ABORT ON explicitement, la base de données est garantie de se comporter de manière cohérente lorsque des erreurs se produisent, garantissant l'intégrité des données et empêchant les modifications accidentelles. Il convient de noter que ce paramètre s'applique uniquement à la session en cours et n'affectera pas les transactions ultérieures.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal