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