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.