REPLACE INTO
MySQL में फ़ंक्शन इस तरह से काम करता है कि यह पंक्ति को हटा देता है और सम्मिलित करता है। मेरी तालिका में, प्राथमिक कुंजी (id
) स्वत: वृद्धि हुई है, इसलिए मैं इसे हटाने की उम्मीद कर रहा था और फिर डेटाबेस की पूंछ पर id
के साथ एक तालिका डालें।स्थानांतरित करें, क्या यह प्राथमिक कुंजी का पुनः उपयोग करता है?
हालांकि, यह अप्रत्याशित है और इसे id
के साथ सम्मिलित करता है! क्या यह अपेक्षित व्यवहार है, या क्या मुझे यहां कुछ याद आ रहा है? (मैं id
जब REPLACE INTO
बयान बुला की स्थापना नहीं कर रहा हूँ)
पुन: पेश नहीं कर सकता: 'CREATE TABLE परीक्षण (आईडी INT प्राथमिक कुंजी AUTO_INCREMENT, नाम VARCHAR (20) नहीं NULL अद्वितीय, मूल्य VARCHAR (200) नहीं NULL); परीक्षण (नाम, मूल्य) मूल्यों में बदलें ('foo', 'bar'); परीक्षण (नाम, मूल्य) मूल्यों में बदलें ('foo', 'baz'); परीक्षा से आईडी चुनें; '2 लौटाता है, नहीं 1 - स्पष्ट रूप से' आईडी' दो बार बढ़ाया गया है। (संपादित करें: InnoDB और MyISAM दोनों के साथ परीक्षण किया गया) – lanzz
इस तालिका पर आप किस स्टोरेज इंजन का उपयोग कर रहे हैं? –
जो व्यवहार आप देख रहे हैं वह अपेक्षित व्यवहार के अनुरूप नहीं है। एक संभावित स्पष्टीकरण यह है कि संभवतः एक विदेशी कुंजी बाधा उल्लंघन के कारण, DELETE ऑपरेशन सफल नहीं होता है। यही एकमात्र चीज है जिसके बारे में मैं सोच सकता हूं। अधिक महत्वपूर्ण परीक्षण मामले के बिना मदद करने के लिए और अधिक कुछ नहीं कर सकता है जो मनाए गए व्यवहार को प्रदर्शित करता है। – spencer7593