2012-05-25 13 views
12

से शुरू नहीं होता है मेरे पास आईडी वाला एक टेबल है, यह आईडी ऑटो वृद्धि और प्राथमिक कुंजी है, पहली बार मैंने उस तालिका में डाला, आईडी 0 से शुरू होती है, लेकिन जब मैं सभी को हटा देता हूं उस तालिका के मूल्य और फिर से डाले गए, आईडी 0 से शुरू नहीं होती है, लेकिन आईडी के आखिरी मूल्य से शुरू होती है, क्या गलत हो रहा है? क्या मैं मान को 0 पर रीसेट कर सकता हूं?mysql आईडी ऑटो increment 0

+3

कुछ भी नहीं गलत है। यह व्यवहार की उम्मीद है। क्या हर बार जब आप सवारी के लिए जाते हैं तो आपकी कार का ओडोमीटर 0 से शुरू होता है? –

+0

और इसलिए मैं क्या कर सकता हूं, मैंने अपनी टेबल पर 300 से अधिक बार डाला, जब मैंने शिक्षक को होमवर्क देखा तो उसे दिखाने के लिए कोई अच्छी बात नहीं है कि ग्राहक 301 से शुरू होते हैं, है ना? – LinCR

+1

यदि आपने किसी स्क्रिप्ट से आवेषण किए हैं, तो आप तालिका छोड़ सकते हैं और फिर स्क्रिप्ट को फिर से चला सकते हैं। यदि सम्मिलित मैनुअल थे, तो आप फिर से सम्मिलित नहीं करना चाहते हैं, है ना? वैसे भी, आपके पास 300 अस्थायी/परीक्षण क्लाइंट थे जिन्हें आपने हटा दिया था। अगर मैं आपका शिक्षक था, तो यह कोई समस्या नहीं होगी। –

उत्तर

16

आप या तो

TRUNCATE `table` 

काटना तालिका में डेटा को हटा देंगे का उपयोग कर तालिका में काट-छांट कर सकते हैं। ध्यान दें कि TRUNCATE का उपयोग करके DELETE जैसे किसी भी डिलीट ट्रिगर्स को भी आग नहीं लगेगी।

या आप गिनती

ALTER TABLE `table` AUTO_INCREMENT = 1 

का उपयोग कर यह तथापि अपेक्षित व्यवहार है रीसेट कर सकते हैं। बाद में ऐसा न करें जब तक कि तालिका वास्तव में खाली न हो।

+0

यह काम करता है धन्यवाद – LinCR

1

आपको auto_increment को पुनरारंभ करने के लिए TRUNCATE कथन का उपयोग करना होगा 1. ब्रेकिंग चीजों से बचने के लिए यह सामान्य व्यवहार है।

+0

क्या आप मुझे एक उदाहरण दें, और धन्यवाद – LinCR

+0

ध्यान दें कि TRUNCATE तालिका आपकी तालिका को नष्ट कर देगी ... – dAm2K

+0

ट्रंकेट टेबल your_table_name – dAm2K

3

तालिका में सभी तत्वों को हटाने से प्राथमिक कुंजी प्रभावित नहीं होती है। प्राथमिक कुंजी अभी भी अपने अंतिम मूल्य से autoincrement होगा।

आप प्राथमिक कुंजी रीसेट करना चाहते हैं, तो आप तालिका में काट-छांट करने की कोशिश कर सकते हैं:

TRUNCATE TABLE yourtable; 

यह yourtable से सभी तत्वों को साफ करता है। चाहे वह प्राथमिक कुंजी रीसेट करता है, आपके डेटाबेस पर निर्भर करता है। MySQL के साथ यह काम करना चाहिए, क्योंकि MySQL हटाता है और TRUNCATE को तालिका को पुन: प्रयास करता है।

+0

मुझे मिल गया, धन्यवाद – LinCR

5

मान 0 के साथ एक प्राथमिक कुंजी सम्मिलित करने के लिए, पहले निम्नलिखित अनुरोध को निष्पादित:

SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO"; 
संबंधित मुद्दे