आपकी स्पष्टीकरण टिप्पणी कहती है कि आप यह सुनिश्चित करने में रुचि रखते हैं कि LAST_INSERT_ID() कोई अन्य समवर्ती INSERT होने पर गलत परिणाम नहीं देता है। बाकी आश्वासन दिया कि अन्य समवर्ती गतिविधि के बावजूद LAST_INSERT_ID() का उपयोग करना सुरक्षित है। LAST_INSERT_ID() वर्तमान सत्र के दौरान उत्पन्न सबसे हालिया आईडी लौटाता है। प्रत्येक में
- ओपन दो खोल खिड़कियां, चलाने mysql ग्राहक और डेटाबेस से कनेक्ट:
तुम खुद कर सकते हैं।
- शैल 1: AUTO_INCREMENT कुंजी वाली तालिका में INSERT।
- शैल 1: SELECT LAST_INSERT_ID(), परिणाम देखें।
- शैल 2: उसी तालिका में प्रवेश करें।
- शैल 2: का चयन करें LAST_INSERT_ID(), परिणाम खोल 1.
- शैल 1 से अलग देखें: फिर से चयन LAST_INSERT_ID() , पहले परिणाम की पुनरावृत्ति को देखते हैं।
यदि आप इसके बारे में सोचते हैं, तो यह एकमात्र तरीका है जो समझ में आता है। ऑटो-वृद्धिशील कुंजी तंत्र का समर्थन करने वाले सभी डेटाबेस इस तरह कार्य करना चाहिए। यदि परिणाम अन्य क्लाइंट्स के साथ एक रेस हालत पर निर्भर करता है, तो संभवत: INSERTING, तो आपके वर्तमान सत्र में अंतिम डाला गया आईडी मान प्राप्त करने का कोई भरोसेमंद तरीका नहीं होगा।
स्रोत
2008-10-03 00:42:32
स्पष्टीकरण: कोड ने अंतिम_insert_id डाला है। इन बयानों में से दो एक ही समय में लगभग निष्पादित और कार्यकारी आदेश डालने # 1 डालने # 2 last_insert_id # 1 कम्प्लिट्स में बदल जाता है और डालने # 2 last_insert_id # 2 कम्प्लिट्स से आईडी वापस आती है और डालने # से आईडी रिटर्न 2 क्या ऐसा हो सकता है? – MPX