Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Wyzwalacz MySQL nie może zaktualizować tabeli - pojawia się BŁĄD 1442

objaw jest to, że uruchamiasz UPDATE (dla wszystkich wierszy) wewnątrz INSERT wyzwalacz - obaj modyfikują tabelę, co jest niedozwolone.

To powiedziawszy, jeśli poprawnie odgadnę intencję twojego wyzwalacza, nie chcesz aktualizować wszystkich wiersze, ale tylko nowo wstawiony wiersz. Możesz to łatwo osiągnąć dzięki

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

Pamiętaj, że to jest BEFORE INSERT wyzwalacz, ponieważ chcesz zmienić wiersz, zanim zostanie zapisany do tabeli.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mysql:usuń wiersze w dwóch tabelach z kluczami obcymi

  2. InnoDB mySQL nie może ustawić ON DELETE SET DEFAULT'. Jak ustawić?

  3. Limit przesyłania dokumentów

  4. Pobierz 2 ostatnie posty dla każdej kategorii

  5. Parametr numer 2 nie jest parametrem OUT