एक संग्रहीत फ़ंक्शन या ट्रिगर उस तालिका को संशोधित नहीं कर सकता है जिसका पहले से उपयोग किया जा रहा है (पढ़ने या लिखने के लिए) उस कथन द्वारा जो फ़ंक्शन या ट्रिगर को आमंत्रित करता है।
से:संग्रहीत प्रोग्राम प्रतिबंध ।
आम तौर पर एक ट्रिगर के साथ जो डालने पर निकाल दिया जाता है, यदि आप उस मान को बदलना चाहते हैं जो डाला जा रहा है तो आप प्रकार का ट्रिगर बनाते हैं BEFORE INSERT
और मानों को NEW
. में बदलें
यह भी देखा कि निम्न कथन वैसे भी नहीं है जो आप चाहते हैं।
update pos_table set PTS=((NEW.won_games*2)+(NEW.tie_games*1));
यह पूरी तालिका को अद्यतन करता है जबकि मुझे लगता है कि आप केवल एक विशिष्ट पंक्ति को अद्यतन करने का प्रयास कर रहे हैं। वैसे भी, यह एक सरल गणना है इसलिए आपको वास्तव में इस कॉलम को संग्रहीत करने की आवश्यकता नहीं है। आप प्रदर्शन समय पर मूल्य की आसानी से गणना कर सकते हैं और अपने कोड को बहुत आसान बना सकते हैं + ट्रिगर के साथ समस्या से बचें।