Това е, което е известно като проблем с "Мутиращата таблица". Това, което се свежда до това, е, че на тригер за ред не е разрешен достъп до други редове в същата таблица, защото няма гаранция, че редовете ще бъдат актуализирани в определен ред, наред с други неща.
Първо, наистина не трябва да се опитвате да съхранявате total_income, когато можете лесно да го изчислите, когато е необходимо. Въпреки това мисля, че можете да правите каквото искате, като направите нещо като
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;
Идеята е да се модифицира student.total_income
спрямо предишната му стойност, тъй като можете да препратите само family.income
спрямо предишната му стойност.