Maison > base de données > tutoriel mysql > le corps du texte

Une restauration automatique se produit-elle lorsqu'une TRANSACTION COMMIT est absente ?

Barbara Streisand
Libérer: 2024-10-24 21:30:30
original
338 Les gens l'ont consulté

Does Automatic Rollback Occur When a COMMIT TRANSACTION is Absent?

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;
Copier après la connexion

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!

source:php
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
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!