मेरे पास दो टेबल हैं;MySQL फिक्सिंग ऑटोइनक्रिकमेंट अंतराल दो टेबलों में
id_image foo bar
1 3 5
2 8 1
3 17 88
7 14 23
8 12 9
id_image bar foo
1 2 3
1 5 6
2 18 11
2 10 12
3 8 21
3 17 81
7 29 50
7 1 14
8 10 26
8 27 34
पहले तालिका में autoincremented id_image
में एक अंतराल नहीं है। दूसरी तालिका में, id_image
पहली तालिका में id_image
को संदर्भित करता है, और वहां प्रत्येक आईडी में से दो हैं।
नोटिस: यह तालिका सैद्धांतिक है। मुझे नहीं पता है, जहां अंतर बिल्कुल ठीक है, या एकाधिक अंतराल भी हैं या नहीं। मुझे पता है कि पहला मान 1
है और अंतिम मूल्य कुल पंक्ति गणना से अधिक है।
अब, मैं इस अंतर को ठीक करना चाहता हूं।
इससे पहले कि आप कहें कि अंतराल कोई फर्क नहीं पड़ता और यदि वे करते हैं, तो यह खराब डेटाबेस डिज़ाइन है, मैं आपको बताता हूं; मैं आपसे सहमत हूं।
हालांकि, मैं जो काम कर रहा हूं वह है (निराशाजनक पीछे की तरफ पीछे की ओर) तीसरे पक्ष के ओपन सोर्स सिस्टम जिसमें मुझे बड़ी मात्रा में मौजूदा डेटा आयात करने की आवश्यकता है जिसमें एकाधिक संदर्भ में क्रॉस-रेफरेंस करने योग्य आईडी नहीं हैं टेबल। एकमात्र तरीका यह सुनिश्चित कर सकता है कि एक ही डेटा को पूरे सिस्टम में प्रत्येक तालिका में एक मिलान आईडी मिलती है, इसे अनुक्रमिक रूप से इनपुट करना है, और इसका मतलब है कि मेरे पास अंतराल नहीं हो सकता है।
तो अब मुझे क्या करना है;
- पहली तालिका में
id_image
कॉलम में अंतर को ठीक करें, ताकि अंतिम मान पंक्ति गणना के साथ मेल खा सके। - दूसरी तालिका में
id_image
कॉलम संपादित करें ताकि उसका मान उसी पंक्ति से मेल खाए जो अंतराल के ठीक पहले से मेल खाता है।
मैं यह कैसे शुरू करूं? मैं समझता हूं कि यह MySQL क्वेरी भाषा की क्षमताओं से बाहर हो सकता है, इसलिए PHP उत्तर भी स्वीकार्य हैं। धन्यवाद! :)
क्या यह innodb इंजन है? – Sebas
हां यह है। हालांकि अंतराल इग्नोर बग द्वारा नहीं, डेटा के एक हिस्से को फिर से दर्ज करने के कारण अंतर था। :) –
क्या आप तालिका को लॉक कर सकते हैं और उसके बाद छवि_आईडी एएससी द्वारा 'चयन छवि_आईडी फॉर्म तालिका ऑर्डर' के साथ इसे फिर से भर सकते हैं और अंतराल ढूंढ सकते हैं? –