Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

O MySQL Trigger não pode atualizar a tabela - obtendo o ERRO 1442


O sintoma é que você está executando um UPDATE (para todas as linhas) dentro de um INSERT trigger - ambos modificam a tabela, o que não é permitido.

Dito isso, se eu adivinhar a intenção do seu acionador corretamente, você não deseja atualizar todos linhas, mas apenas a linha recém-inserida. Você pode conseguir isso facilmente com
CREATE TRIGGER sum
BEFORE INSERT
ON news
FOR EACH ROW
SET NEW.sum = (NEW.int_views + NEW.ext_views)/NEW.pageviews

Lembre-se de que este é um BEFORE INSERT gatilho, pois você deseja alterar a linha antes que ela seja gravada na tabela.