sql >> Databasteknik >  >> RDS >> Mysql

MySQL-utlösare och SUM()

Det här är vad som kallas "muterande tabell"-problemet. Vad det handlar om är att en radutlösare inte tillåts komma åt andra rader i samma tabell eftersom det inte finns någon garanti för att raderna kommer att uppdateras i en specifik ordning, bland annat.

För det första, du borde verkligen inte försöka lagra total_income när du kan beräkna det enkelt när det behövs. Som sagt, jag tror att du kan göra vad du vill genom att göra något liknande

CREATE TRIGGER family_income_update
  AFTER UPDATE ON family
  FOR EACH ROW 
BEGIN
  UPDATE student
    SET total_income = total_income + (NEW.income - OLD.income)
    WHERE student.id_student = NEW.id_student;
END;

Tanken är att ändra student.total_income i förhållande till dess tidigare värde, eftersom du bara kan referera till family.income i förhållande till dess tidigare värde.



  1. Hur LOAD_FILE() fungerar i MariaDB

  2. Aktivera Entity Framework 6 för MySql (C#) i WinForms av Microsoft Visual Studio 2013

  3. Undvikande enstaka offert i PLSQL

  4. Python REST API:er med kolv, anslutning och SQLAlchemy – Del 2