2011-05-06 19 views
12

द्वारा वापस किया जा रहा है जो मैंने पढ़ा है LAST_INSERT_ID() चलाने के लिए अंतिम सम्मिलन कथन की आईडी पुनर्प्राप्त करता है। यदि आपके कनेक्शन पर अंतिम सम्मिलन कथन चलाया गया है या अंतिम कनेक्शन सभी कनेक्शन के लिए डेटाबेस पर चलाया जाता है? मुझे लगता है कि मैं जो पूछने की कोशिश कर रहा हूं वह है: एक व्यस्त डेटाबेस संचालित वेबसाइट पर निम्नलिखित कोड गलत आईडी वापस करने की संभावना क्या हैं, और क्या डेटाबेस को लॉक करने के बाद उस को रोकने के लिए कोई तरीका है?MySQL और गलत आईडी का मौका LAST_INSERT_ID()

INSERT INTO example (string) VALUE ('something'); 
SELECT LAST_INSERT_ID(); 

चाहेंगे PHP के mysql_insert_id() एक बेहतर समाधान हो, या मैं सिर्फ डेटा है कि बस डाला गया था और हड़पने आईडी कि जिस तरह से के लिए क्वेरी करना चाहिए?

उत्तर

11

कि पिछले डालने बयान अपने कनेक्शन पर चलाने के लिए या ...

अपने कनेक्शन पर last_insert है।

चाहेंगे PHP के mysql_insert_id() एक बेहतर समाधान

नहीं, यह ही है हो सकता है।

या क्या मुझे सिर्फ उस डेटा के लिए क्वेरी करना चाहिए जो अभी डाला गया था और आईडी को इस तरह पकड़ लिया गया था?

तरह से जिस तरह से धीमी

लिंक भी होता है: उस लिंक से http://dev.mysql.com/doc/refman/5.0/en/information-functions.html#function_last-insert-id

उद्धरण:

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

+0

त्वरित और सूचनात्मक उत्तर के लिए धन्यवाद। –

संबंधित मुद्दे