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

MySQL Trigger ne peut pas mettre à jour la table - obtention de l'ERREUR 1442

Le symptôme c'est-à-dire que vous exécutez une UPDATE (pour toutes les lignes) dans un INSERT déclencheur - les deux modifient la table, ce qui n'est pas autorisé.

Cela dit, si je devine correctement l'intention de votre déclencheur, vous ne voulez pas mettre à jour tout lignes, mais uniquement la ligne nouvellement insérée. Vous pouvez y parvenir facilement avec

CREATE TRIGGER sum
BEFORE INSERT
ON news
FOR EACH ROW
SET NEW.sum = (NEW.int_views + NEW.ext_views)/NEW.pageviews

N'oubliez pas qu'il s'agit d'un BEFORE INSERT déclencheur, car vous souhaitez modifier la ligne avant qu'elle ne soit écrite dans la table.