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>
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!