Você não pode atualizar linhas na tabela em um depois gatilho de atualização.
Talvez você queira algo assim:
CREATE TRIGGER `records_integrity` BEFORE UPDATE
ON `records`
FOR EACH ROW
SET NEW.epc=IFNULL(new.earnings/new.clicks, 0);
EDITAR:
Dentro de um gatilho, você tem acesso a
OLD
e NEW
. OLD
são os valores antigos no registro e NEW
são os novos valores. Em um antes gatilho, o NEW
os valores são o que são gravados na tabela, para que você possa modificá-los. Em um depois gatilho, o NEW
valores já foram escritos, então eles não podem ser modificados. Acho que a documentação do MySQL
explica isso muito bem.