Maison > Questions et réponses > le corps du texte
P粉6499901632023-08-31 15:04:19
Je garderais tout en cours : alors tout le code lié à ce comportement est au même endroit. Aussi : le blocage ne suivrait-il pas l'exécution de votre instruction CALL au lieu de continuer ? Si nous continuons, le problème aura peut-être été résolu et nous n'attendrons plus rien. De plus, les transactions suivant un blocage ne seront exécutées qu’une fois le blocage résolu.
Mon approche de votre code est la suivante :
CREATE PROCEDURE manageAccounts() BEGIN DECLARE totalTrys INT DEFAULT 0; DECLARE EXIT HANDLER FOR SQLEXCEPTION GET DIAGNOSTICS CONDITION 1 @err_num = MYSQL_ERRNO; CALL guardi.prod_update_guardi_accounts(); WHILE(@err_num = 1213 AND totalTrys < 4) DO SET totalTrys = totalTrys + 1; SELECT SLEEP(900); CALL guardi.prod_update_guardi_accounts(); END WHILE; END;
Vous devrez tester ceci : non testé, donc les fautes de frappe ne sont pas impossibles.