sql >> Database >  >> RDS >> Mysql

MySQL-triggers en SUM()

Dit is wat bekend staat als het "mutating table"-probleem. Waar het op neer komt is dat een rijtrigger geen toegang heeft tot andere rijen in dezelfde tabel, omdat er geen garantie is dat rijen onder andere in een bepaalde volgorde worden bijgewerkt.

Ten eerste moet u niet proberen het totale inkomen op te slaan als u het gemakkelijk kunt berekenen wanneer dat nodig is. Dat gezegd hebbende, denk ik dat je kunt doen wat je wilt door iets te doen als

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;

Het idee is om student.total_income te wijzigen ten opzichte van de vorige waarde, aangezien u alleen kunt verwijzen naar family.income ten opzichte van de vorige waarde.



  1. Java SQL FOUT:Relatietabelnaam bestaat niet

  2. PostgreSQL-fout 'Kan geen verbinding maken met server:bestand of map niet'

  3. hoe maak je db mysql met sqlalchemy

  4. Leg MySQL Joins uit in eenvoudige taal