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

Comment restaurer automatiquement les transactions MySQL en cas d'exceptions ?

Mary-Kate Olsen
Libérer: 2024-11-23 03:24:10
original
194 Les gens l'ont consulté

How to Automatically Roll Back MySQL Transactions on Exceptions?

Annulation des transactions MySQL en cas d'exceptions

Lors de l'exécution d'une série de commandes MySQL, il est crucial de gérer les erreurs pour garantir l'intégrité des données. Une façon d'y parvenir consiste à annuler automatiquement l'intégralité de la transaction au cas où une commande rencontrerait une exception.

Pour configurer l'annulation automatique, utilisez la syntaxe DECLARE ... HANDLER :

DELIMITER $$

CREATE PROCEDURE `sp_fail`()
BEGIN
    DECLARE `_rollback` BOOL DEFAULT 0;
    DECLARE CONTINUE HANDLER FOR SQLEXCEPTION SET `_rollback` = 1;
    START TRANSACTION;
    INSERT INTO `tablea` (`date`) VALUES (NOW());
    INSERT INTO `tableb` (`date`) VALUES (NOW());
    INSERT INTO `tablec` (`date`) VALUES (NOW()); -- FAIL
    IF `_rollback` THEN
        ROLLBACK;
    ELSE
        COMMIT;
    END IF;
END$$

DELIMITER ;
Copier après la connexion

Cette procédure définit un gestionnaire (CONTINUE HANDLER FOR SQLEXCEPTION) qui définit l'indicateur _rollback sur 1 si une exception SQL se produit. Après avoir exécuté les commandes individuelles au sein de la transaction, il vérifie l'indicateur _rollback pour déterminer s'il faut annuler ou valider la transaction.

En implémentant cette technique, toute exception rencontrée lors de l'exécution de la commande entraînera l'annulation de l'intégralité de la transaction. en arrière, en garantissant que les modifications partielles ne sont pas appliquées à la base de données.

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