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

किसी फ़ंक्शन के अंदर एक प्रक्रिया को कॉल करना MySQL ERROR 1422 फेंकता है

ऐसे कई कथन हैं जो एक अंतर्निहित प्रतिबद्धता का कारण बनते हैं, और इनमें से कोई भी संग्रहीत फ़ंक्शन या ट्रिगर के अंदर उपयोग नहीं किया जा सकता है, या एक संग्रहीत कार्यविधि में जिसे संग्रहीत फ़ंक्शन या ट्रिगर से कॉल किया जाता है, क्योंकि यह वास्तव में इसके शुद्ध प्रभाव में कोई भिन्न नहीं है।

एक पल का प्रतिबिंब इसका कारण बताता है:संग्रहीत कार्य (और ट्रिगर) क्वेरी चलने के दौरान निष्पादित होते हैं . वे हमेशा, बिना किसी अपवाद के, क्वेरी शुरू होने के बाद निष्पादित करना शुरू करते हैं, और क्वेरी समाप्त होने से पहले निष्पादन समाप्त करते हैं। वे एकल क्वेरी के निष्पादन के दौरान कई बार भी चल सकते हैं, खासकर जब क्वेरी में कई पंक्तियाँ शामिल हों।

उस प्रकाश में, इसका कोई मतलब नहीं होगा यदि यह संभव हो COMMIT एक लेन-देन जबकि एक ही क्वेरी चल रही है... और यही है START TRANSACTION करता है, यदि कोई लेन-देन चल रहा है -- यह परोक्ष रूप से वर्तमान लेन-देन करता है, और एक नया प्रारंभ करता है।

यह एक संग्रहीत प्रक्रिया में ठीक है, जब तक कि आप इसे किसी अन्य क्वेरी के बीच में नहीं बुला रहे हैं (एक संग्रहीत फ़ंक्शन या ट्रिगर के माध्यम से, जो किसी अन्य क्वेरी के बीच में एक प्रक्रिया को लागू करने का एकमात्र तरीका है) लेकिन क्या कर रहा है आप यहां जो कर रहे हैं वह समर्थित नहीं है... भले ही कोई लेन-देन नहीं चल रहा हो, फिर भी चल रही क्वेरी के बीच में लेन-देन शुरू करना संभव नहीं है।

http://dev.mysql.com/doc/refman /5.6/hi/implicit-commit.html




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PHP MYSQL एसोसिएट सरणी और तालिका

  2. SSH टनलिंग के माध्यम से Python को MySQL से कनेक्ट करने में सक्षम करें

  3. mysql डेटाबेस से कनेक्ट नहीं हो सकता [स्ट्रेटो]

  4. MySQL के POINT को PHP में टेक्स्ट में बदलें

  5. mysql में सटीक स्ट्रिंग की खोज कैसे करें?