No puede actualizar filas en la tabla en un después activador de actualización.
Quizás quieras algo como esto:
CREATE TRIGGER `records_integrity` BEFORE UPDATE
ON `records`
FOR EACH ROW
SET NEW.epc=IFNULL(new.earnings/new.clicks, 0);
EDITAR:
Dentro de un disparador, tienes acceso a OLD
y NEW
. OLD
son los valores antiguos en el registro y NEW
son los nuevos valores. En un antes disparador, el NEW
los valores son los que se escriben en la tabla, por lo que puede modificarlos. En un después disparador, el NEW
Los valores ya se han escrito, por lo que no se pueden modificar. Creo que la documentación de MySQL
explica esto bastante bien.