Mysql
 sql >> Datenbank >  >> RDS >> Mysql

MySQL-Trigger kann die Tabelle nicht aktualisieren – es wird ERROR 1442 angezeigt

Das Symptom ist, dass Sie ein UPDATE ausführen (für alle Zeilen) innerhalb eines INSERT trigger - beide modifizieren die Tabelle, was nicht erlaubt ist.

Das heißt, wenn ich die Absicht Ihres Auslösers richtig errate, möchten Sie nicht alle aktualisieren Zeilen, sondern nur die neu eingefügte Zeile. Das erreichen Sie ganz einfach mit

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

Beachten Sie, dass dies ein BEFORE INSERT ist auslösen, da Sie die Zeile ändern möchten, bevor sie in die Tabelle geschrieben wird.