Mysql
 sql >> Database >  >> RDS >> Mysql

MySQL Trigger non può aggiornare la tabella - ottenendo ERROR 1442

Il sintomo è che stai eseguendo un UPDATE (per tutte le righe) all'interno di un INSERT trigger - entrambi modificano la tabella, cosa non consentita.

Detto questo, se indovino correttamente l'intenzione del tuo trigger, non vuoi aggiornare tutto righe, ma solo la riga appena inserita. Puoi ottenerlo facilmente con

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

Tieni presente che questo è un BEFORE INSERT trigger, poiché desideri modificare la riga prima che venga scritta nella tabella.