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

Mon déclencheur MySQL ne fonctionne pas, syntaxe simple, pas compliquée

Une fonction ou un déclencheur stocké ne peut pas modifier une table déjà utilisée (en lecture ou en écriture) par l'instruction qui a appelé la fonction ou le déclencheur.

de :Restrictions des programmes stockés .

Généralement avec un déclencheur qui est déclenché à l'insertion, si vous voulez changer la valeur qui est insérée, vous faites le déclencheur du type BEFORE INSERT et modifiez les valeurs dans NEW

a également remarqué que la déclaration suivante n'est pas ce que vous voulez de toute façon.

update pos_table set PTS=((NEW.won_games*2)+(NEW.tie_games*1));

Il met à jour la table entière alors que je pense que vous essayez seulement de mettre à jour une ligne spécifique. Quoi qu'il en soit, il s'agit d'un calcul simple, vous n'avez donc pas vraiment besoin de stocker cette colonne. Vous pouvez tout aussi facilement calculer la valeur au moment de l'affichage et rendre votre code beaucoup plus simple + éviter le problème avec le déclencheur.