जब सम्मिलन किया जाता है, तो डेटाबेस द्वारा ही ऑटोइनक्रिकमेंट मान उत्पन्न होता है; जिसका अर्थ है कि वास्तविक सम्मिलित क्वेरी करने से पहले आप इसे प्राप्त नहीं कर सकते।
आपके द्वारा प्रस्तावित समाधान वह नहीं है जिसका अक्सर उपयोग किया जाता है -- जो होगा :
- कुछ आधा-खाली डेटा डालें
- जनरेट किया गया ऑटोइनक्रिकमेंट मान प्राप्त करें
- उस ऑटोइनक्रिकमेंट मान का उपयोग करके अपनी गणना करें
- नया / पूरा डेटा रखने के लिए पंक्ति को अपडेट करें --
where
में पहले जेनरेट किए गए autoincrement का उपयोग करकेupdate
. का खंड क्वेरी, यह पहचानने के लिए कि कौन सी पंक्ति अपडेट की जा रही है।
बेशक, सुरक्षा एहतियात के तौर पर, इन सभी कार्यों को लेन-देन में किया जाना चाहिए (एक "सभी या कुछ नहीं" व्यवहार सुनिश्चित करने के लिए)
छद्म कोड के रूप में:
begin transaction
insert into your table (half empty values);
$id = get last autoincrement id
do calculations
update set data = full data where id = $id
commit transaction