c# - Problem with MySQL's LAST_INSERT_ID() -


मुझे LAST_INSERT_ID ()

के साथ एक समस्या हो रही है मैं इसका उपयोग करता हूं मुझे एक नया कनेक्शन खोलने और बंद करने की आवश्यकता है I यह मेरे आवेदन को एक महान सौदा धीमा कर देती है मुझे कई सम्मिलित वक्तव्यों को समाप्त करने की ज़रूरत है जो प्रत्येक एक ही सम्मिलित आईडी पर सभी के लिए डाला जाता है!

  यहां कोई भी संगामिति की समस्याओं के साथ एक विशिष्ट तालिका से माइस्क्ल, ओडीबीसी और सी # के साथ एक ही कनेक्शन पर अंतिम सम्मिलित आईडी कैसे प्राप्त कर सकता है? #region निजी चर निजी स्थिर डाटाएवेश _DataAccess = null; निजी स्थिर वस्तु _SyncLock = नया ऑब्जेक्ट (); निजी ओडबीसीकनेक्शन myConnection = null; #ेंड्रियन # एरियान इंस्टेंस मेथड पब्लिक स्टेटिक डेटाएवेश इंस्टेंस {get {lock (_SyncLock) {if (_DataAccess == null) _DataAccess = new DataAccess (); वापसी _DataAccess; }}} #ेंड्रियन # रेगियन कन्वर्टर सार्वजनिक डेटाएवेश () {myConnection = नया ओडीबीसी कनेक्शन (स्ट्रिंग कॉनडीडीबी); myConnection.Open (); } #ेंड्रियन    

हर बार जब मैं इसका उपयोग करता हूँ, मुझे इसे खोलने और बंद करने की आवश्यकता है एक नया कनेक्शन

नहीं, आपको एक नया कनेक्शन की आवश्यकता नहीं है। आपको एक सम्मिलन वक्तव्य के बाद उसी कनेक्शन पर इसका उपयोग करना चाहिए।

से:

जो आईडी उत्पन्न हुई थी, उसे सर्वर पर प्रति-कनेक्शन आधार इसका अर्थ यह है कि [ LAST_INSERT_ID ] किसी दिए गए क्लाइंट द्वारा लौटा गया मान सबसे पहले AUTO_INCREMENT मान है, जो कि AUTO_INCREMENT स्तंभ को प्रभावित करने वाले हालिया कथन के लिए उत्पन्न होता है उस क्लाइंट यह मान अन्य ग्राहकों द्वारा प्रभावित नहीं हो सकता है, भले ही वे अपने स्वयं के AUTO_INCREMENT मानों को उत्पन्न करते हैं यह व्यवहार यह सुनिश्चित करता है कि प्रत्येक ग्राहक अन्य क्लाइंट की गतिविधि के लिए अपनी चिंता को बिना अपना आईडी पुनः प्राप्त कर सकता है, और ताले या लेनदेन की आवश्यकता के बिना।

Comments