Comment saisir toute exception dans les triggers et stocker des procédures pour mysql?

j'ai essayé d'attraper l'exception mysql en particulier pour les déclencheurs et les procédures de stockage.Comment Pouvons-nous attraper l'exception du côté de mysql?. J'ai toujours pas trouvé de solution. votre aide sera apprécier.

Merci Hitesh

2
demandé sur Hitesh 2011-08-02 11:12:13

2 réponses

vérifier la syntaxe de DECLARE HANDLER

http://dev.mysql.com/doc/refman/5.1/en/declare-handler.html

aussi, si vous essayez de déboguer un SP, cela pourrait être utile pour vous:

http://www.bluegecko.net/mysql/debugging-stored-procedures /

2
répondu user470714 2011-08-02 07:20:14

parce que c'est en haut de ma recherche pour la gestion des erreurs MySQL dans les triggers, j'ai pensé que je partagerais ma solution pour MySQL 5.5+

mon billet original: https://stackoverflow.com/a/26115231/1733365 reproduit ci-dessous...

comme cet article arrive en tête de liste quand je cherche la gestion des erreurs dans MySQL triggers, j'ai pensé que je partagerais un peu de connaissances.

S'il y a une erreur, vous pouvez forcer MySQL à utiliser un SIGNAL , mais si vous ne le spécifiez pas comme une classe comme SQLEXCEPTION, alors rien ne se passera, car tous les États SQL ne sont pas considérés comme mauvais, et même alors vous devez vous assurer de RESIGNAL si vous avez des blocs de début/fin imbriqués.

alternativement, et probablement plus simple encore, à l'intérieur de votre déclencheur, déclarez un gestionnaire de sortie et démissionnez de l'exception.

CREATE TRIGGER `my_table_AINS` AFTER INSERT ON `my_table` FOR EACH ROW
BEGIN
    DECLARE EXIT HANDLER FOR SQLEXCEPTION
        RESIGNAL;
    DECLARE EXIT HANDLER FOR SQLWARNING
        RESIGNAL;
    DECLARE EXIT HANDLER FOR NOT FOUND
        RESIGNAL; 
    -- Do the work of the trigger.
END

Et si dans votre corps, il se produit une erreur, il sera jeté en arrière, vers le haut et sortir avec une erreur. Cela peut également être utilisé dans les procédures stockées et autres.

cela fonctionne avec n'importe quoi version 5.5+.

2
répondu Kyle Johnson 2017-05-23 12:15:25