sql >> Databasteknik >  >> RDS >> Mysql

MySQL Trigger kan inte uppdatera tabellen - får ERROR 1442

Symtomet är att du kör en UPDATE (för alla rader) inuti en INSERT trigger - båda ändrar tabellen, vilket inte är tillåtet.

Som sagt, om jag gissar avsikten med din utlösare korrekt, vill du inte uppdatera alla rader, men bara den nyinfogade raden. Det kan du enkelt uppnå med

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

Tänk på att detta är en BEFORE INSERT trigger, eftersom du vill ändra raden innan den skrivs till tabellen.



  1. SQL Left Join

  2. Hur REPEAT() fungerar i MariaDB

  3. Byt namn på MySQL-databas

  4. Hur kan jag få en fullständig lista över alla frågor som för närvarande körs på min MySQL-server?