sql >> Base de Datos >  >> RDS >> Mysql

MySQL Trigger no puede actualizar la tabla:obtiene el ERROR 1442

El síntoma es que está ejecutando una UPDATE (para todas las filas) dentro de un INSERT disparador:ambos modifican la tabla, lo cual no está permitido.

Dicho esto, si adivino correctamente la intención de tu disparador, no querrás actualizar todas filas, pero solo la fila recién insertada. Puede lograrlo fácilmente con

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

Tenga en cuenta que este es un BEFORE INSERT activador, ya que desea cambiar la fila antes de que se escriba en la tabla.