Maison >base de données >tutoriel mysql >Une restauration automatique se produit-elle lorsqu'une TRANSACTION COMMIT est absente ?
Retour en arrière automatique en l'absence de COMMIT TRANSACTION
Lors de l'exécution d'une série d'instructions SQL dans une transaction, l'intention est que toutes les modifications soient être appliqué de manière atomique ou pas du tout. Dans les situations où une instruction ultérieure rencontre une erreur, la question se pose de savoir si la transaction est automatiquement annulée sans commande explicite ROLLBACK TRANSACTION.
Considérez l'exemple suivant :
START TRANSACTION; BEGIN; INSERT INTO prp_property1 (module_name,environment_name,NAME,VALUE) VALUES ('','production','','300000'); /** Assume that a syntax error occurs here...**/ Blah blah blah DELETE FROM prp_property1 WHERE environment_name = 'production'; COMMIT TRANSACTION;
L'idée fausse est que la transaction est automatiquement annulée dès qu'une erreur se produit.
Cependant, ce n'est pas le comportement typique des systèmes de bases de données. En l'absence de stratégie appliquée par le client, une erreur ne déclenche pas automatiquement une restauration. Au lieu de cela, l'erreur est signalée et la transaction reste ouverte, permettant à l'utilisateur de prendre les mesures appropriées.
Dans l'exemple fourni, si une erreur de syntaxe était rencontrée, l'instruction d'insertion échouerait, mais la transaction ne fonctionnerait pas. être annulé. L'instruction DELETE serait toujours exécutée et les données seraient supprimées de la table.
Ce comportement peut être contrôlé par le client ou l'application qui exécute la transaction. Certains outils ou frameworks côté client peuvent implémenter une politique selon laquelle une erreur non gérée déclenche une restauration. Cependant, il est important de se rappeler qu'il ne s'agit pas du comportement par défaut dans les systèmes de bases de données et qu'il ne faut pas s'y fier.
Pour garantir que la transaction est annulée si une erreur se produit, il est essentiel d'utiliser la gestion des erreurs ou explicitement émettre une commande ROLLBACK TRANSACTION en cas d'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!