Mysql
 sql >> Base de données >  >> RDS >> Mysql

mySQL Trigger fonctionne après l'insertion de la console, mais pas après l'insertion du script

Je pense qu'il est beaucoup plus probable que vous rencontriez une erreur non interceptée, plutôt que que le déclencheur ne s'exécute pas, d'autant plus qu'il s'exécute avec succès à partir de la console.

Vous devez isoler où l'erreur se produit - dans le déclencheur lui-même ou dans le script d'appel.

Dans votre script python, imprimez l'instruction SQL que python envoie à MySQL pour exécution afin de vous assurer qu'elle est construite comme prévu - par exemple, si NEW.type n'est pas égal à 'PRE', le déclencheur sera exécuté, mais n'entraînera aucune mise à jour.

Assurez-vous également que vous vérifiez les erreurs sur l'insert. Je ne suis pas un programmeur python, donc je ne peux pas vous dire comment cela se fait, mais ceci semble être ce que vous cherchez.

Si aucun de ces éléments ne vous mène au problème, commentez l'ensemble if (NEW.type = 'PRE') THEN bloquer et effectuer une modification simple, telle que définir NEW.type sur 'debug'. Après vous être assuré que le déclencheur s'exécute bien, retestez successivement avec plus de code réel rajouté jusqu'à ce que vous isoliez le problème.

De plus, selon le commentaire de Marcos, je serais surpris si le script ne s'auto-commitait pas une fois terminé. En effet, je ferais cette déclaration à propos de n'importe quel script/langage.