जैसे-जैसे डेटाबेस बढ़ते और विकसित होते हैं, हमें अक्सर नए कॉलम जोड़ने या मौजूदा संरचनाओं को संशोधित करने की आवश्यकता महसूस होती है। एक सामान्य परिदृश्य मौजूदा तालिका में एक सीरियल आईडी जोड़ने की आवश्यकता है, खासकर जब हम चाहते हैं कि यह आईडी रिकॉर्ड निर्माण के कालानुक्रमिक क्रम को प्रतिबिंबित करे। इस ब्लॉग पोस्ट में, हम निर्माण तिथि कॉलम के अनुसार क्रमबद्ध एक MySQL तालिका में एक ऑटो-इंक्रीमेंटिंग सीरियल आईडी जोड़ने की प्रक्रिया के बारे में जानेंगे।
कल्पना करें कि आपके MySQL डेटाबेस में उपयोगकर्ता नामक एक तालिका है। इस तालिका में पंजीकरण_दिनांक डेटाटाइम कॉलम सहित विभिन्न कॉलम हैं जो रिकॉर्ड करते हैं कि प्रत्येक उपयोगकर्ता कब पंजीकृत हुआ। अब, आप एक नया कॉलम user_serial_number जोड़ना चाहते हैं जो एक ऑटो-इंक्रीमेंटिंग पूर्णांक के रूप में कार्य करेगा, लेकिन आप चाहते हैं कि इन आईडी का प्रारंभिक असाइनमेंट पंजीकरण_दिनांक क्रम पर आधारित हो।
हम MySQL कमांड के संयोजन का उपयोग करके इसे प्राप्त कर सकते हैं। यहां चरण-दर-चरण प्रक्रिया दी गई है:
सबसे पहले, हमें अपनी तालिका में नया user_serial_number कॉलम जोड़ना होगा:
ALTER TABLE users ADD COLUMN user_serial_number INT;
यह कमांड हमारी उपयोगकर्ता तालिका में user_serial_number नामक एक नया पूर्णांक कॉलम जोड़ता है।
अब जब हमारे पास अपना नया कॉलम है, तो हमें इसे पंजीकरण_दिनांक क्रम के आधार पर मानों से भरना होगा:
SET @row_number = 0; UPDATE users SET user_serial_number = (@row_number:=@row_number 1) ORDER BY registration_date;
आइए इसे तोड़ें:
आखिरकार, हमें भविष्य में प्रविष्टियों के लिए इस कॉलम को ऑटो-इंक्रीमेंटिंग के रूप में सेट करने की आवश्यकता है:
ALTER TABLE users MODIFY COLUMN user_serial_number INT AUTO_INCREMENT, ADD PRIMARY KEY (user_serial_number);
यह कमांड user_serial_number कॉलम को ऑटो-इंक्रीमेंटिंग के लिए संशोधित करता है और इसे प्राथमिक कुंजी के रूप में सेट करता है।
डिफ़ॉल्ट ऑर्डरिंग: डिफ़ॉल्ट रूप से, MySQL का ऑर्डर बाय क्लॉज आरोही क्रम (एएससी) में क्रमबद्ध होता है। इसका मतलब है कि पुराने रिकॉर्ड को कम सीरियल नंबर मिलेंगे, और नए रिकॉर्ड को अधिक नंबर मिलेंगे। यदि आप इसे उलटना चाहते हैं, तो आप चरण 2 में ORDER BY पंजीकरण_दिनांक DESC का उपयोग कर सकते हैं।
फ्यूचर इंसर्ट्स: इस प्रक्रिया के बाद, नए रिकॉर्ड्स को उनके यूजर_सीरियल_नंबर के रूप में अगला उपलब्ध पूर्णांक मिलेगा, भले ही उनका रजिस्ट्रेशन_डेट मान कुछ भी हो। आदेश केवल कॉलम की प्रारंभिक जनसंख्या पर लागू होता है।
प्राथमिक कुंजी: यदि user_serial_number को प्राथमिक कुंजी होने की आवश्यकता है (जैसा कि चरण 3 में है), तो user_serial_number में जोड़ने से पहले किसी भी मौजूदा प्राथमिक कुंजी को हटाना सुनिश्चित करें।
प्रदर्शन: बड़ी तालिकाओं के लिए, यह ऑपरेशन समय लेने वाला हो सकता है और तालिका को लॉक कर सकता है। इसे ऑफ-पीक घंटों के दौरान चलाने पर विचार करें।
विशिष्टता: सुनिश्चित करें कि आईडी असाइनमेंट प्रक्रिया के दौरान किसी भी संभावित समस्या से बचने के लिए पंजीकरण_दिनांक मान अद्वितीय हैं।
यदि आप चाहते हैं कि भविष्य के इंसर्ट हमेशा पंजीकरण_दिनांक के आधार पर ऑर्डर बनाए रखें, तो आपको इस तर्क को अपने एप्लिकेशन में लागू करना होगा या MySQL ट्रिगर्स का उपयोग करना होगा। हालाँकि, यह जटिल हो सकता है और प्रदर्शन को प्रभावित कर सकता है, इसलिए ऐसे समाधान को लागू करने से पहले अपने उपयोग के मामले पर सावधानीपूर्वक विचार करें।
डेटाटाइम कॉलम के आधार पर मौजूदा MySQL तालिका में एक सीरियल आईडी जोड़ना एक सीधी प्रक्रिया है जिसे कुछ SQL कमांड के साथ पूरा किया जा सकता है। यह तकनीक डेटा विश्लेषण, विशिष्ट पहचानकर्ता बनाने, या आपके डेटा में स्पष्ट कालानुक्रमिक क्रम स्थापित करने के लिए विशेष रूप से उपयोगी हो सकती है।
याद रखें, जबकि यह प्रक्रिया सीरियल आईडी की प्रारंभिक आबादी के लिए अच्छी तरह से काम करती है, भविष्य के सम्मिलन के लिए इस क्रम को बनाए रखने के लिए अतिरिक्त विचार और संभावित रूप से अधिक जटिल समाधान की आवश्यकता होती है। इन परिचालनों को उत्पादन डेटाबेस पर चलाने से पहले हमेशा अपने डेटा की एक प्रति पर उनका परीक्षण करें।
इन चरणों का पालन करके, आप अपने मौजूदा डेटा में एक उपयोगी नया आयाम जोड़ सकते हैं, जिससे आपके डेटाबेस को क्वेरी करने और व्यवस्थित करने की नई संभावनाएं खुल सकती हैं।
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3