/ PHP / MySQL (ऑटो-इन्क्रीमेंट) [डुप्लिकेट] - php, mysql, ऑटो-इन्क्रीमेंट के साथ अंतिम प्रविष्टि में +1 जोड़ें

PHP / MySQL (ऑटो-वृद्धि) के साथ अंतिम प्रविष्टि में +1 जोड़ें [डुप्लिकेट] - php, mysql, स्वतः वृद्धि

संभावित डुप्लिकेट:
ऑटो-इन्क्रिमेट फ़ील्ड में "छेद" कैसे भरें?

हम वर्तमान में एक टेबल पर ऑटो-इन्क्रीमेंट का उपयोग कर रहे हैंजहां प्रविष्टियां लगातार आती और जाती रहती हैं। इसके साथ समस्या यह है कि अंततः ऑटो-इंक्रीमेंट आईडी बहुत बड़ी हो जाती है, जैसा कि ऑटो-इंक्रीमेंट काम करता है।

हम इसे हमेशा अंतिम प्रविष्टि में +1 जोड़ना चाहेंगे।

उदाहरण के लिए:
हमारे पास 4 प्रविष्टियां हैं और आईडी 4 हटा दी गई है। अगले जोड़े गए प्रविष्टि को आईडी 4, और 5 नहीं मिलना चाहिए।

मुझे यकीन नहीं है कि यह पहले पूछा गया है। लेकिन खोज करने के बाद मैं केवल अगले ऑटो-इंक्रीमेंट नंबर प्राप्त करने के तरीके पर समाधान खोजने में सक्षम था, जो कि मैं बिल्कुल नहीं देख रहा हूं।

उत्तर:

उत्तर № 1 के लिए 1

यदि आप ऐसा नहीं करना चाहिए क्योंकि auto_increment को अच्छे कारणों के लिए इस तरह से डिज़ाइन किया गया है (जैसे कि अगर आपके पास बैकअप है और आप इसे तब रीस्टोर करना चाहते हैं जब इसमें पुरानी डिलीट की गई आईडी हो, जिसे फिर से लिखा गया हो, तो आप कैसे करते हैं?)

लेकिन आपके सवाल का जवाब देने के लिए: आपको उपयोग करना होगा

ALTER TABLE `table` AUTO_INCREMENT = MAX(id)+1;

हटाने के बाद, आप एक ट्रिगर बना सकते हैं


जवाब के लिए 0 № 2

यदि आप वास्तव में ऐसा करना चाहते हैं (मैं व्यक्तिगत रूप सेऑटो-इंक्रीमेंट का उपयोग करने के लिए प्रोत्साहित करें), आपको अंतिम आईडी प्राप्त करने के लिए लेन-देन करने की आवश्यकता है और अन्य के अनुसार अपनी आईडी वृद्धि के साथ अपनी आईडी सेट करते हुए नई पंक्ति सम्मिलित करें।


उत्तर № 3 के लिए -1

ऐसा करने के लिए यह एक अच्छा विचार नहीं है, आईडी को हमेशा अद्वितीय रहना चाहिए, चाहे कोई भी रिकॉर्ड मौजूद हो या हटा दिया गया हो।

हालाँकि यदि आप वास्तव में इसे करना चाहते हैं, तो आप कुछ ऐसा कर सकते हैं

select max(id) + 1 of bla;

लेकिन आपको इसके लिए सही लेन-देन स्तर की आवश्यकता है क्योंकि यदि आप "नहीं" तो आपके पास डुप्लिकेट आईडी की संभावना है।


उत्तर के लिए -3 № 4

आप अधिकतम आईडी मूल्य चुन सकते हैं और इसे बढ़ा सकते हैं।

SELECT MAX(`id`)+1 as `new id` FROM `table`;

यदि आपके पास 5 प्रविष्टियां हैं और 3 हटा दी जाती है, तो यह आपको अगली आईडी के रूप में 6 प्राप्त करेगी