Đây là những gì được gọi là vấn đề "Bảng đột biến". Điều tóm lại là trình kích hoạt hàng không được phép truy cập vào các hàng khác trong cùng một bảng vì không có gì đảm bảo rằng các hàng sẽ được cập nhật theo một thứ tự cụ thể, trong số những thứ khác.
Trước hết, bạn thực sự không nên cố gắng lưu trữ total_income khi bạn có thể dễ dàng tính toán nó khi cần thiết. Điều đó nói rằng, tôi nghĩ rằng bạn có thể làm những gì bạn muốn bằng cách làm một điều gì đó như
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;
Ý tưởng là sửa đổi student.total_income
so với giá trị trước đó của nó, vì bạn chỉ có thể tham chiếu family.income
so với giá trị trước đó của nó.