इसे "म्यूटिंग टेबल" समस्या के रूप में जाना जाता है। इसका मुख्य कारण यह है कि एक पंक्ति ट्रिगर को उसी तालिका में अन्य पंक्तियों तक पहुँचने की अनुमति नहीं है क्योंकि इस बात की कोई गारंटी नहीं है कि पंक्तियों को अन्य बातों के अलावा, एक विशिष्ट क्रम में अपडेट किया जाएगा।
सबसे पहले, आपको वास्तव में 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
. का संदर्भ दे सकते हैं इसके पिछले मान के सापेक्ष।