Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

मेरा MySQL ट्रिगर काम नहीं करता, सरल सिंटैक्स, जटिल नहीं

<ब्लॉकक्वॉट>

एक संग्रहीत फ़ंक्शन या ट्रिगर उस तालिका को संशोधित नहीं कर सकता है जिसका पहले से उपयोग किया जा रहा है (पढ़ने या लिखने के लिए) उस कथन द्वारा जो फ़ंक्शन या ट्रिगर को आमंत्रित करता है।

से:संग्रहीत प्रोग्राम प्रतिबंध

आम तौर पर एक ट्रिगर के साथ जो डालने पर निकाल दिया जाता है, यदि आप उस मान को बदलना चाहते हैं जो डाला जा रहा है तो आप प्रकार का ट्रिगर बनाते हैं BEFORE INSERT और मानों को NEW . में बदलें

यह भी देखा कि निम्न कथन वैसे भी नहीं है जो आप चाहते हैं।

update pos_table set PTS=((NEW.won_games*2)+(NEW.tie_games*1));

यह पूरी तालिका को अद्यतन करता है जबकि मुझे लगता है कि आप केवल एक विशिष्ट पंक्ति को अद्यतन करने का प्रयास कर रहे हैं। वैसे भी, यह एक सरल गणना है इसलिए आपको वास्तव में इस कॉलम को संग्रहीत करने की आवश्यकता नहीं है। आप प्रदर्शन समय पर मूल्य की आसानी से गणना कर सकते हैं और अपने कोड को बहुत आसान बना सकते हैं + ट्रिगर के साथ समस्या से बचें।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL - गिराए गए प्रदर्शन स्कीमा डेटाबेस को पुनर्प्राप्त करें

  2. कॉलम से अद्वितीय मानों का चयन करना

  3. नेस्टेड क्लासेस - CustomRowMapper !! अब कोई समस्या नहीं !! - भाग 2

  4. MySQL CSV डेटा से NULL मान लोड करता है

  5. MySQL में भूमिकाओं के साथ विशेषाधिकार कैसे प्रबंधित करें